{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/rishotics/anaconda3/envs/rl3.6/lib/python3.6/site-packages/h5py/__init__.py:34: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.\n",
      "  from ._conv import register_converters as _register_converters\n",
      "Using TensorFlow backend.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "          From Date    PM10      NO     NO2    WS    CO Benzene     NOx  \\\n",
      "0  01-01-2019 00:00  752.78  179.68  111.66   0.3  3.52   20.45   251.7   \n",
      "1  01-01-2019 08:00  408.19  135.13  148.64  0.53  4.57    9.75  189.21   \n",
      "2  01-01-2019 16:00  475.85  123.27  177.02  0.31  5.66   17.79  176.38   \n",
      "3  02-01-2019 00:00  771.27  357.61  106.05   0.3  5.96    20.9  350.56   \n",
      "4  02-01-2019 08:00  495.06    75.6  125.28  1.13  1.56   10.11  128.26   \n",
      "\n",
      "   Ozone    SO2     NH3 Toluene   PM2.5  \n",
      "0  22.86  10.79   93.35   58.33  492.03  \n",
      "1  22.68  13.86   104.4   31.63  266.16  \n",
      "2  26.04  21.74   89.24   89.25   382.5  \n",
      "3  61.84   5.99  109.64   99.34  545.28  \n",
      "4  34.37  19.54  108.53   57.46  344.22  \n"
     ]
    }
   ],
   "source": [
    "                                                                                                                                                                                                                                                                        from math import sqrt\n",
    "import numpy as np\n",
    "from numpy import concatenate\n",
    "from matplotlib import pyplot\n",
    "from pandas import read_csv\n",
    "from pandas import DataFrame\n",
    "from pandas import concat\n",
    "from sklearn.preprocessing import MinMaxScaler\n",
    "from sklearn.preprocessing import LabelEncoder\n",
    "from sklearn.metrics import mean_squared_error\n",
    "from keras.models import Sequential\n",
    "from keras.layers import Dense\n",
    "from keras.layers import LSTM\n",
    "from pandas import read_csv\n",
    "from datetime import datetime\n",
    "from keras.layers import Bidirectional\n",
    "import datetime\n",
    "import matplotlib.pyplot as plt\n",
    "import pandas as pd\n",
    "\n",
    "# load data\n",
    "def parse(x):\n",
    "\treturn datetime.strptime(x, '%Y %m %d %H')\n",
    "dfav = read_csv('data/appcpc/Jan10-Jul20/anand_vihar_jan19_jul20_8h.csv')\n",
    "dfav.columns = ['From Date','PM10','NO','NO2','WS','CO','Benzene','NOx','Ozone','SO2','NH3','Toluene','PM2.5']\n",
    "# dfav.index.name = 'From Date'\n",
    "dfav['PM2.5'].fillna(0, inplace=True)\n",
    "\n",
    "dfbw= read_csv('data/appcpc/Jan10-Jul20/Bawana_jan19-jul20_8h.csv')\n",
    "dfbw.columns = ['From Date','PM10','NO','NO2','WS','CO','Benzene','NOx','Ozone','SO2','NH3','Toluene','PM2.5']\n",
    "# dfbw.index.name = 'From Date'\n",
    "dfbw['PM2.5'].fillna(0, inplace=True)\n",
    "\n",
    "dfvv = read_csv('data/appcpc/Jan10-Jul20/vivek_vihar_jan19_jul20_8h.csv')\n",
    "dfvv.columns = ['From Date','PM10','NO','NO2','WS','CO','Benzene','NOx','Ozone','SO2','NH3','Toluene','PM2.5']\n",
    "# dfvv.index.name = 'From Date'\n",
    "dfvv['PM2.5'].fillna(0, inplace=True)\n",
    "\n",
    "\n",
    "dfwz = read_csv('data/appcpc/Jan10-Jul20/Wazirpur_8h_jan19-july20.csv')\n",
    "dfwz.columns = ['From Date','PM10','NO','NO2','WS','CO','Benzene','NOx','Ozone','SO2','NH3','Toluene','PM2.5']\n",
    "# dfwz.index.name = 'From Date'\n",
    "dfwz['PM2.5'].fillna(0, inplace=True)\n",
    "\n",
    "\n",
    "dfdt = read_csv('data/appcpc/Jan10-Jul20/DTU_8h_jan19-jul20.csv')\n",
    "dfdt.columns = ['From Date','PM10','NO','NO2','WS','CO','Benzene','NOx','Ozone','SO2','NH3','Toluene','PM2.5']\n",
    "# dfdt.index.name = 'From Date'\n",
    "dfdt['PM2.5'].fillna(0, inplace=True)\n",
    "\n",
    "frames=[dfav,dfbw,dfvv,dfwz,dfdt]\n",
    "df=pd.concat(frames)\n",
    "\n",
    "# drop the first 24 hours\n",
    "# dataset = dataset[24:]\n",
    "# summarize first 5 rows\n",
    "print(df.head(5))\n",
    "\n",
    "\n",
    "# save to file\n",
    "\n",
    "\n",
    "# print(dfav[])\n",
    "\n",
    "df = df.replace(to_replace='None', value=np.nan).dropna()\n",
    "\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "# print(df['PM10'])\n",
    "df = df.replace(to_replace='None', value=np.nan).dropna()\n",
    "df['Date'] = pd.to_datetime(df['From Date']) \n",
    "df['year'] = df['Date'].dt.year \n",
    "df['month'] = df['Date'].dt.month \n",
    "df['day'] = df['Date'].dt.day \n",
    "df['hour'] = df['Date'].dt.hour \n",
    "df['minute'] = df['Date'].dt.minute\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "df_train = df[(df[\"year\"] <2020) | (df['month']<=2)]\n",
    "\n",
    "df_test=df[(df[\"year\"] >2019) & (df['month']<8) & (df['month']>2)]\n",
    "df.to_csv('pollution.csv')\n",
    "df_train.to_csv('train_pollution.csv')\n",
    "df_test.to_csv('test_pollution.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(3369, 12) (870, 12)\n"
     ]
    }
   ],
   "source": [
    "dataset_train = read_csv('train_pollution.csv', header=0, index_col=0)\n",
    "dataset_test = read_csv('test_pollution.csv', header=0, index_col=0)\n",
    "values_train = dataset_train.values\n",
    "values_test = dataset_test.values\n",
    "values_train=values_train[:,1:-6]\n",
    "values_test=values_test[:,1:-6]\n",
    "print(values_train.shape,values_test.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(367, 17)\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAEICAYAAACktLTqAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nOydd3hUVfrHP3daZibJZNJ7gySE3qtIEXVZ1J+9ICpYVl11Ldt01921rAVdXV17QewK6iLSwUKTXgKkQEjvvUwyM5l6z++POwwEQhFQ0J3P88yTmVvOPXNz5z3nvOc931cSQhAgQIAAAX5ZqM50BQIECBAgwOknYNwDBAgQ4BdIwLgHCBAgwC+QgHEPECBAgF8gAeMeIECAAL9AAsY9QIAAAX6BBIx7gAABAvwCCRj3AAECBDgLkCRpjSRJbZIkBfk+L5ckyep7uSVJch3y+Y3jlhdYxBQgQIAAZxZJktKAEsAC3CGE+Pyw/e8B1UKIv51omYGee4AAAQKceW4CNgPvATNPR4Ga01FIgAABAgQ4JW4C/g1sATZLkhQrhGg4lQIDPfcAAQIEOINIkjQeSAU+E0LsQHHPXH+q5QaMe4AAAQKcWWYCq4QQzb7Pn3AaXDMBt0yAAAECnCEkSTIA1wBqSZLqfZuDALMkSYOFELtPtuxAzz1AgAABzhyXAV6gHzDE9+oLrEfxw580AeMeIECAAGeOmcC7QohKIUT9gRfwCjBDkqST9q4E4twDBAgQ4BdIoOceIECAAL9AAsY9QIAAAX6BBIx7gAABAvwCCRj3AAECBDjDSJJULklSl08UrE2SpKWSJCX79r13iGhYqyRJX0uSlH3cMk92QlWSJD2wDiUmUwN8IYR4RJKkdGAeEAnsAG4UQriOVVZUVJRIS0s7qXr8L9HpcGNzeQlSq5AkCA7SAoJOhweDTo1KkrA5PbTYXKgliXizHqvDg9MjE2MKQqc+elvu8QrUKgmr0+0vLzRIi0Yt/XRfMECA/1Fyc3NJTU3FZDIhyzKVlZV4PB4yMjIoLy9Hq9WSmJiILMtUVFTgdDrJzs5mx44dzUKI6J7KPBXjLgHBQgirJEla4HvgPuD3wAIhxDyfLOVuIcTrxyprxIgRYvv27SdVjx+LsmYbEcE6wgzabtu9suCz7VV8X9zMqLQIVubXo1ZJOD0yNW1d3DmpN9ePSqGosZMH/5vLVcOTaOp0sqG4mbJmG1ePSGLWuDTiwwxHXLOyxc7cDWUkRxi5bmQywUEadla28c76MnJrLFS22rsdH6RRoZIkutxetGoJWSj16xUVTGmzrduxlw9N5IVrhwDQbncxd0M5Xxc0MDItnPEZUdzzSQ4ALq+MRiXhkQUalUTfeBPPXjWIvvEmANxeGbdX5s21peyoaKPZ6mRoSjiPXNIPvVZ9xHfyeGVa7S5iQvU/6P57vDIatYoDz6fyuP1whBDHPFeWBe1dbvbVdxCkUZMRE0KYQYssC6wuDya99qjnBghwukhLS2POnDmcf/75ACxbtoz777+f/fv3M2vWLJKSknjiiScAWLp0Kddeey1WqxVJknYIIUb0VOZJx1AK5Vdn9X3U+l4COI+DugjvA48CxzTuPyZCCMqabaREGNH4eq7VbXa+2lVLSaOVuyb3JincyGOL81lT2MTw1HDKW2zk1XRw0cB4Xp0xzF/WjopWHlmUT15NBwatmqV76kg0GwjVawjSqIgL0/P3hXnM31aJwy1T3Ghld1U7kgTDU8IZkmzmzbWlvLm2lAGJJmZfoRhNtUpiVX4998/f5TOeghe/2c/4jCiW59UTbtQyIi2CBy7I5MJ+cbTaXHQ6PHy2vQqXV+baEck8sbSAUL2WB87Pon+CiRX59eyuaueGMal8sKmcd74vQ69V0zs6mBe/KcLq9DA0xcwHmyr4YFMFiWYDE/tEMyAhjCuGJVLeYmPx7lrmb6vid5/mkGg2sKm0BZdHJiJYR6vNxYBEE2EGLfO2VaJTSzx26QAAPthUjgT0jglh9vJ97Km2cPGgeF6ePhSABTtr2F7RhtmoZX1RE2N7RXLZ0EQ2FrcwKCmM4iYrjy0q4JLBCVS12bG7PNwxoTfxYXo6HG4mZEajUasoauhkyZ46atu7yIoNJTJEx6VDEvkyp4bv9jWwu8qCR5ZJCjcyKj2CrWWtaFQSGrVEncVBv3gTu6raqW7r8v+PVRJcPCiB0mYreTUdnJsZxcvTh2I26n6qRzbA/zh2u5358+czZsyYI/ZZrVY+/vhjhg4detxyTinOXZIkNYrrJQN4FfgXsFkIkeHbnwwsF0IM6OHc24HbAVJSUoZXVFScdD2ORk17F7+fv4stZa30ig5mxuhUCus7+O/OGryywKBVIwtBaqSRokYrI9Mi2FXVzsi0cDYUtyBJsOeRC3F6ZJ5cupcvc2qIM+n560V9ubBfLI0dThLDDahVSs9QCMGSPXXMXr4Pp0dm9hUDiTXpiTEFEWtSeq4FtR1sLGnmrXWltNgUb9XQZDM7K9sYkBjGGzcMp87SxX3zdlHd1sX1o1N4eFpfgoNOXimiw+Hmn4sL+HxHNQATs6L5y7RssuNMPLY4n+JGK69cP+yIUQrA+qIm7vxwBx5ZcN3IZHQaFd/ubeSPv+rDtIHxAPz1y1w+21bFn37VB41axT+XFPjPN+rUTO0fx4KcGs7JiMTpltle0YZeq8LpkekTG8q++k7/8SoJZAH94k0UN1nxyoIwg5ZW20HPXp/YUC7sH8urq4sRgEGrxu7yAhATGkRjp5Po0CASwvSYjTpKm61UtXaRGRNCiF6DLCDCqCW3xkLfeBMTs6JJjwpGkmBzaSvvbSxHCMFNY9P4cFMFLq9Mr+hg/vrrvpyTEcXmshZq27sI1mm4ZHCC///fbnfh8siYjTp0msB0VoATJy0tjebmZjQaDTabjejoaFauXMnAgQOZNWsW8+bNQ6/Xo9frGTVqFC+88AK9e/c+Zs/9VNwyycAHQCwgoYwCbvZtKwHSgDogSgjR71hlnYpb5s21JczfXsXU/nFkxYbS0OFgcLKZ4kYrz60qxOMV3Do+nWW5dRQ1WjHq1Fw+NJE7J/YmSKviHwvzqWqzc9ekDC4aFO8fxm8vb+WqNzZx09hUvtvXSGOHk99MSOfuyRkYdcc2tMdzBYBiCF5bU0Knw8OawkaMOjUf3jqaBLPirilq6GRFXj2/ndTbP+I4FYQQ/O7THEqabCz47TgMuiNdKEfD4fbi9sqEHsVF0dTp5DcfbGdXVTsAfeNNPHHZADocboalhGPSa/jnkr1sLGnG6ZG5ZXw6149KAUCtksipbGNzaSuTs6O5f94u+sWbmH3lIJqtTlptLjJjQyhutFLX7sDh8fLoonyarS6GJJt5+6YRBGlVWOxutpW38srqYq4dkcxvzu2Fymd07S4P3+5t5ML+sQRpjv+9y5ttdDjcDEoy8/GWCv6+MI8Es6FbD/8AvaODGds7kt1VFnJrLACkRBiZMTqF74ubUUkSFw2MxyMLgjQq6jscmPQa6jscVLZ2Udlqp7PLze8vzOKigfEn7X46GkIIqtu6CA7SEBEcGH2cTbTbXWwobiElwsgl4wf73TJer5evvvqK2267jYKCAh566KFubplD+bGMezwQL4TYKUlSKFAGvAvcDTwhhHhKkqTXgKlCiF7HKutkjfvCnBrun7+LXlHBlLfYkA/7KgMSTbw8fRjpUcF4ZUFTp5OI4BPrVcmy4Lcf72BlfgMxoUG8fdMIBiebf3AdzyaEEMgCf0/zdNPQ4aDF6qJXdHCP/vcT4UQaxk6Hm9ImG9nxoSdkrE+VLpcXq9PD6Ke+QSVJvDNrJH1iQ9lS1sJn26vYXt5GRkwIFw2Kx6BV859vi2i3u8mMCaHT4aG+w3FEmRqVRGK4geRwI81WJ/vqO0mOMPC7yZn0iQslIlinTGrrNf7v6HB7/c9xWlTwUevbbHXy/Kr9FNR1UNFio93uBuDczCiy40IJDtJQ3mxjU2kLTo9MqF6DTq3i+tGpTOoTTVK44Se5r79Edle1k1/bweTsaNYWNlHVZmdXVTt7qi24vTKXDEqgf4KJL3fVsqe6HSFg5thU3r/v4m4+d4Do6Ghef/11lixZclLG/VRUIT1A6SHvJZQUUV6g1bc9BDj6U3iKTM6O4d4pmdx7XgaWLjdtdhchQVp2V7eTFhlMVmyI31CoVRJxYSc+qadSSbw+Yziby1oYlhJ+0sbqbEKSJH7M4JdYk97vfjpZTqTnGqrX/qQNrUGnxqBTs/qPkzBo1cT4vuOlQxK5dEjiEQ3S1SOSsTo8xIXp6XJ5KW+xYTZq6XJ5iQ4Nwub0EhWi84/IHG4vi3bV8sa6Ev783z1HXD/cqMVk0FLRYsek19Dh8DA6PYLyFhupkcEYtGqev2YwxY1WsmJDeXxxASvy6hmVHsGv+sUxKDmMunYHy/Pq2FrWitMjEx0axNhekQRpVHQ43LTaXPxzSQH/XKL8VjKiQ0gMN6DXKpP2BbUdqFUSkSE6UiOCKW22UtJkY3xGFJEhOiZmRTMhMxqnR8blldlR0UrfeFOPgQO/VKxODzfN3Yqly+3fplZJpEYYuXxoInaXl893VPP5DuifYOLe8zKZkBXN4KQw3r/vYDlCCBYtWkRbWxt9+/ZlyZIlJ1WfU+m5DwJWA2EoBr0LSAGqUSZWDUAboBdChPVw/o/ucw8Q4OeExytT3mKjtMlGh8OD3eWh3e6msdNBc6eLyBAdBXUdTMiMZs76UmLD9HQ6PDR1Ov1lhBu1tHe5+e3E3vx56pGh0McaveVWWyhq7KS0yUZ+rYUmqxO7y4vN6WFIshkJiYZOB5UtduLNenpHh7C+qJmOLrc/ugrwR4/pNCrG9IpEr1ExKj2CiGAdE7KiiQoJ+vFu4k+IyyMjC8XdZnV6eGLJXuZvr+KOib2IDgni3MxoMmNC/O5BUOYBHW4vvaKCu3UI0tLSaGhoQK1WI0kSqamp/OUvf2HGjBlHRMscyo/ilvEVPAHFsH8DzBBCLJAkyQE8KoSYLUnSQ773x+zOnY2hkAECnM10ONwYtGq0ahV3fLidlfkNPHn5AFbk1ZMUbuDhi/oRcgqT8CeKEAKnR+bz7VVUt3chywKXR2ZK31i+3dvAptIWOh0e6iyKaypUr+GjW0f7R14H5gRcXhm1JPlHFQfmB4QQVLbaMeo0RIf23CjIsqDN7vKHArfaXHQ43EQE64gJDSLMoEWSJLyyoMXmRK9VE6zTUNlqx+OVEcDWslaW7qlDpYKokCCCgzQ43F6aOp3k1li4aGA8la12qtu66HJ5sbk8dDo8qCTQqFW4PDIAd03quVH9sfgxjbsWxbBnCSHifdtcwEghxG5JkgYD24QQx5zJCRj3AAFOHofbS5vddda6QIQQtNnd1LR1cev720gwG3j4or6s29/Egp011LQfOVE9plcEWrWK3BqLf85Ao5IUF5lWTXyYHrVKYl99J2pJotPpOer1dWoVwUFqLF1u/7zcgbUch5IZE0KoXqOMWJxe9FplzsNk0LK1rJWs2BCyYkMx6tQYdcoEtccr4/SFB6dEGLmwf9yPNqfVEz/WhKqEEsfuAUYdCHc80Z57wC0TIMD/Hgt2VvP7z5TkQioJxvWOYuqAOEL1GmQh0KhUFDVaWZFXh06jYkBCGIOSzNhdHlptLuwuL10uLxWtSgBFdlwoXlnQOzoErUaFSoIIow6TL3y2qdNJk9VJp8ON2aAjxhSE1emho8tDr6hgjEHKXFpqRDADEk1HnfNxuL1n5bzbj2Xcx6NkC9mHEvZYCPwV+BTYjuJ/rwBGCCGOOfslSVKT79iTIQpoPu5RZ55APU8fP4c6ws+jnj+HOsLPo55noo6pR5MfQAhxSi8Uw553yOdClBBJgHig8FSvcZzrb/8xyw/U8+x7/Rzq+HOp58+hjmd7PYFylIASL9AAvIcSKbgGJbhk8GHHf+nbPsn3eQCwEqVhED2UH+E7x4bSCb7+ROp1Qj13SZLuA36DEu74thDiRZ8//Q0gHEgAkoQQHZIk/QsYiLJqNQxYLYS45ljlB4TDAgQ4O7G7PNRbnAQHqQkz6NBru68RsTk9ODwyDrcXq8NDRIiOqJAgDjg3hFD0ioI0KmShiNx5vDKSJNFqcyELQaxJ718dLQRIEnQ6PMhCWUXe07oUj1egUoHN6aXd7iLWpD/q+hWvEFjsbkwGrT+ix+7yUtvehUcWxIQGYdCqj7mw74BoX1wPob6Hin65XC6KiooICwvDZrPhdrsJCwsjOTlZqbfHQ35+PgC9evUiNDQUh8OB1WpFo9FQUlLC8OHDu5VfWqpEnKemptLV1UVRURHZ2dkYDIZTEw6TJGkAisrjKMAFrADuRHG/WID+QDRgBx4ACoBVKC1YPZAIZAghvEe7RmBCNUCA009Vqx2tWnXE+o7KFjvV7Xb6x4dhMmjwysKv1XNgFbely01Tp7IYSueLhRdCmXT8xyX9ODczmi6Xl1FPfkOn04NOrSI7PpQ91Rb6xIZyxbBEFu6qpaPLTU17F8kRBlqtLmyug2YgKzYEjUrFvvoOfj0wnp0VbWjUEjePS+dxn4SFTqPiy7vG0S/eRE17F0adhr8uyGVFfj06zcEolagQHc9cOYixvSMx6jRY7G7e3ViGSa/lne/LqGnvIipEx2/O7UWHw83b68uICQ1Cp1FR2qSI7E0flcJTlw/AKwtW5jcQEaxjbO9IqlrtTH1xHTaXl5ljU/0aSgc4XPTrT3/6E3v37sVqtXLeeefx1ltvUVFRgVqt5uWXX2bj9t2s/WYFH374IVPOm+wvp7i4mMzMTA61yTabjfDwcPLy8sjKygLgxhtvJDExkdmzZ5/yIqa+wBYhhB1AkqS1wBVAFmAWQgifFMFKIcQ7kiT9BXhKCPG07/iVKA3DphO41klT1WrH4faSGRuKEIKSJhthBu1Rw6cCBDiTWJ0e9tYpC4NKGq2syKtnSLKZOyb27tYDlWUl1HB3dTv9EkyY9Fra7S6W59WjliQuHhyPUafB7ZXZV9dJq91F3/hQZi/bx4KcGtQqiSHJZrJiQ8iMCcXh8fLC1/tx+ySeI4N1NFuVldvN1iOVubPjQvng1lEALM+t5/2N5dz54Q5emTGMeouDTqeHF64dzNT+8Rh0apbl1vG7T3N4evk+suNCiTUFcf3oFHZVtRNu1HLFsCSSwg202930TzBhd3l5fHEB3+5rpG98KHk1Fh5fUkC4Ucs7s0by24928Pv5uwkP1rK5tBW1SkIlwe98CxdTIoyM6RXJjDlbuPX97SSFG3h31kheXV3Mwl21gKJv9J/rhjBnfRlPL98HKLIRn985DqNOTVGDlf/urOa9jeUMSgpjU0kLi3Yr575380gW5tQgC0VZ9f1NFQxIDMOo09Dl9nLxoPhu96uqqoply5YxbMKvWLfyW/q49PTr149Vq1YxZsIUHn/hDTTn3ExTx0L+8NkuvhgwgoyY0KM+J/v370ej0fgNO8DgwYNZu3btcZ+xEzHuecCTkiRFoviVpqFMmOYDlwILgauBZN/xicDmQ86v9m37UbC7PGwobuHuj3fi8spc2C+WNruLbeVthARpeP+WUQxPDT+psl0emVUF9VS3dXHr+HS0p0HjJcDPjwPywwCNnQ72VFmYv70Kryy4a1JvRqRFdDv+QGjiltJWNhQ3E+cTMBuUFMaeagsbipv5vqgZl1f2nxMfpufbfY1sLmvh/ZtHkVtj4Z9LCsiv7UCSwOFW4r+nZMfwdUGDX3RuWV4dL08fyg1ztrC72tKtHr+d1BuAHRVtLM+r51N7FQDnZERyx4TebClrobzFTlqkkYYOJ33jTYxOj8Dp8RKkUaNRS6RFHpSSmDkujQv7x3L921u4+d1tqCQYlBTGZUMS/VEm0wbGE2vS4/bKjE6POGr0SZLvJxkcpOGZqwb5txc3WrlvXg63T+jFsJRw/jqtL/fN2wXAHRN7YXV4uGFMql+C+gCL7xnP5rIW/rWykCte20in08MNY1JIiwymX7yJcRlRXDIogWark+r2LtIig/2x9AOTwuiXYKKkycpfFuQCcMOYFNYXNTPr3W3KtSf04oELsihq7ORPXxxcRfz0sr3UWxxMvej/CNJpiYwwM/n8X7HRNAGP9xsW5tRwyeipvPj6HBpW1WOxtPP8rEv5x8rn6XLLzJy7jWX3nkuYsWfdJqvVisnU/buGhYXR2dnZ4/GHcqI+90+BywAZyEEx7mtQJg50KCtRQ4QQYZIkvQJkAr1RXDWlwEdCiC8OK/OUQyHXFzVx09ytCKE8ZJP7xPDq6mIiQ3RcOzKFBTurcXpkFvx2HE1WJ9vLWxECUiONDEgMIynceESZte1d1LR3kRJh5Pq3N1PiG7JdOyKZ2VcOPO3CTgHObuasL+W5VYX8+VfZtNicvLm2FI8siDPpkYWg2eokOcLI6PQIUiOD2VDczJ5qC1Zf3HVIkMb//gApEUYu6BfL+IwoZCEICdIwIi2CL3ZU8eB/c8mIUYTSokODOL9vLEEaFUNTzCzYWcOe6nZ6RyuukZzKdh5ZlI/ZqKWjy81jlw4gNcLItvJWJvWJZnjqwUZHCEGT1YnbK0g0n1o8vMsj89HmCnZXt/PIJf1/VEEyryy44rUNZMaG8tzVg497fH6thcte3YDbK1h8z3gGJh2xOP6otNlcvL62hHCjjtsn9MLtlVmYU0N+bQd/uDALs1GHyyPzzd4GEswGbE4P87dV8d69F9H/2j9TF5LZrbzotU8TlD2Ryohh1L5xG7FDJnL52P688tyTJCUl8ei/32D2LhXXjkzmycsH9uiWycnJ4ZxzzsFuP5jL4fnnn2fNmjUsXrz41EIhe/C5F6EY9XOAF4QQyyVJ+g3wvBDCJEnSe8BYIBsYjeKj/7UQ4qhumZP1uZc0WfnN+9upbuti2X3jyYgJxeWR0aolJEliX30Hl726AYdbPuJctUpi6oA4+saFUt3WxffFzbi9Mg0dzm7HvXr9MPJrLby2poQHzs/ijom9WJhTwzd7GwnSqBiZFs7lw5K6yeW22Vw8sXQvfeNDmTkurVuPv8vlRa9VIUkSudUWPt9RhRCg16potSlD1Znj0n7ShRABFLyyYGNJMx1dHi7sH0tOZTvXvLnJLyMMcOWwJC4eHM/YXpF4ZcGzK/ZR3mJnQ3EzHlnQL95EvwQTg5PNZMWEMNLXq2/sdLKrqp3suNBjin69t6GMr3bXMq53JL+dlHHcVaZz1pfy4eYK/n5RP87vF3v6bsZZhFcWqKQTT9jS6XBT0mRjyE+kP5SWlsabb72NKmkQe+s62FvXwYDEMD5/7DZmzJhBaeQYPn7mz9RsX0VJSQlpaWkkJSXx0Ucf4YrOZlR6BGaj7pg+9/z8fDIzlcbjpptuIiEh4bg+9xMx7lcDlwkhZkiSlIKi3/4yMBklWuZzlF68TggxRpKkz1CMehZKFE0hkC6EqDnaNU5lQtXh9tJqc/mlcg+ntMnKkj11ZMWG0j/BhNPjpd3u5uu9DXyypZJOhweTXuMTOdIzIDGMRLOBxxYXMCErimevGowsC/7w+W6+zKlBp1bh8sqkRhoRAipb7ei1Ki4bkshfL+qLyyNzw5wtFDUqWuTXjEjinsmZxIYFsWBnDX9fmEeYQUtaVDA7KtowaNUEaVU43F5C9VqaOp0MSzEzNCWc7/Y1MiU7hgcuyDqunvveug50GhW9o0N+0P2rtzhos7uOGOae7eyr7+DhL/OICQ1i5rg0gjQqOh0ecmssRAbrGNc7ivnbK4kJ1TNzXFqPZRTUdrCptIXpo5LZWdHOk8v2sreuA1A04yUJ2u1uvvvjRL7d20iXy8vVI5J6NDIdDjdtNhepkT+aTl6As5TDJ1QPMGnSJG644QZuu+02amtrKS0tZfz48QB+4z5p0iSEEDidTkpLS+nfvz9dXV1IkkRQkDJfeN111yFJEnPmzGHXrl1MmzaNjRs30r9//1OeUM0D3pckqRBwAo0o0TGbgI98LwdKrCaAESVmswBl9WoBSrx7N+N+mFvmBKrRM3qt+qiGHaBXdAj3Tsk8YvuItAjuPS+TNrurR/fMBf1iUfl+xCqVxPNXD2ZEWjjlzTYm94lhbO9IJEkir8bCx1sq+Gx7NTXtXdRZHFS32Xnv5pFsKmnhtTUlfLa9GqNOSSjRL95EVGgQ1a12Hp7Wl2tHJftTuQkhWLS7lkcX5bOzsp3BSWG8s6GMuRvKSIsM5tZz05k+MgWVSsLjlSmo66Cs2YbZqGPm3K0AzLlpxBE9OCEEdRYHC3ZWU9hgxeVRJGx7RYWwZE8tbXY3M0an8MRlA07a7WRzenj5u2Lyay3otWp2VLSRaDZww5gUrhqe3G0ksm5/E1vKWsiOM3FedswxG64ul5f6Dgd5NRbmbaskzmTgjom9mPH2FiRJorjRyvK8+mPW7YBevEqCK4YlUdxopdXmIqeqDbdX8NzKQrrcXhLNBl64djAGrZq/LczH6fHy3NWDMfqSchwLk14bSMkX4KgkJCSQkNDzM1RRUUF6err/s8FgIDU1lfLycgBee+01brnlFmJiYoiMjOT111+nf//+x73mifrcbwXuQgmiz0cx8ipgrRDiv5IkXQPcLoQ4X5KkJcBsIcT3vnO/BR4UQhy1a/5LCIX8cFM5/1iUj0GrZu6skYzpFYkQgj3VFvbVd5BT2U5yhJFbx6cfdxmz0+Olrt1BaqSRnZXtrC1sZENJCzsq2kiPCsbu8tBsdeE9RBtDkpQsRJ0ODwvuGsfmkhY+3FxBZkwoeq3KHzmg06gIM2hJCNNT0mQjIyaEvvEmPt1ayZ9+1Ye7JvVGkiQsdjcfbCpnX0Mn5/WJ4fKhid3U7QAsdjff7G0gMkTHh5sqWF3YSHacCbdXJjveREmjlYK6DoalmLG7vKRGGjEbdMzfXuUvQ69VMT4jmuQIAzNGp5IRE+Iv+9U1xXy6VRldASRHGGjscOL0KHlel957LhHBOjaVtihxylo1g5PDKGu2saOijVHpEby7oZwvdlST7dNI31jSQlRIEKmRRoYkmzknI5K1hU2kRAYzY3SK/3/j8cp4hQjomgc4qzmt8gOSJD2FEgHzNAdDISXA4vO5vwmsER+DLOUAACAASURBVEJ86ju+EGUlVt3RyvwlGHdQfO1qtfSj9OCEEMzfVsXyvHpiQoOIMQXRJ85EWqSR2nYHI9PC8ciCS17+ng6HG6dHZmBiGJWtdtrtbqaPSuHczCj/iOTQnrRXFtw/fxeLd9fSOzqY0b0iWby7FqvTQ3SI4m+ekh3DlL6xVLfZ8ciCIclmnlmxj4qWgxM995+fyf3nZ3Wr88JdNTy6SIlZtrs8uL2C2yf04vcXZLG7qp0le+pYX9REncWBEDAk2YzD46XF6qK+w8HUAXFM7hNDfJieUekRFDda+Wx7FYOTzFw29PhBWF5ZsCKvnvEZUYQZtTjcXl8e1UDkU4CfP6ds3CVJihFCNPp87quAMShumd8KIdZIkjQFeFYIMVySpIuAe1BCJkcDLwkhRh2r/F+KcT8b2FXVzmOL80kwG3juqsHofFrTPeVHPZQDhvi9DeXsq+9kUp9oHrggiz6xoby3sdyfF1ajklBJEi6vTLBOzZs3jsDtlVGrJMZnRB3RuwcUNT7fKMMty8SEHrnKr9nq5PHFBVS02Agz6uh0uPnzr7IZ2zvy9NyYAAF+gZwO474eiATcwO+FEN/6hMP+g+K3dwB3CSF2+HrxrwBTUUIhbz6WS8ZX/skIhwWjTNi2oWgyxPm2H9sB+9OTgKI5EYcy/+AGtEAflPmMnxodSqhqvu/zAJRJ7wP16gfsBlKBTg5m1Tr0uDNRz0OJQ3ke8zny/54J1KK4EH9sJBSZjQ6UFdnQ/T7FosxP5XFm72dP9TxAlG/7gXt9Ju/nAeJRwq7jUJ5FUNbKGFGi9Q6v0+BDjvspOVDPA/c0CsVlHQsU89P8z1OPJj9wxkV3TvaF0qiUAntQDMFuoP9ZUK9gIPSQ9xtRGrp64CHf9odQRjpnon5pdBd6+9dh9ar3vb8IWI5iGMYAW89wPeMPeV8JzPO97+/73wcB6b5nQv0T1E9CSQb/4mHbD72f1Qf+z2fqfh6jngfE/bajyIacsfuJ0gCafe8NKGqzF6NE4l3n296I0oEEJU/zG7731wGf/cDrlaMsyLSidA6XAsmnUM9D7+WLKHOOZ/w3dKI993KUFsgLeIQQIyRJigDm+36E5cA1Qog2X8/9PyhuGTswSwix81jlB4TDAgQ4cYRQQkHNRh3xx8kL7PIedKUFUDhU6EuWZSorK/F4PGRkZJzpqv1gjiUc9kNauqjDtj1L9x7fM7730+jeWm05XvnDhw8XAQIEODZFDR1i2n/WidQHl/hfPVHZYhNPL9srfj9/l0h9cIl4dFHeaa+L1eE+7WX+VKSmpoqvv/7a/3np0qUiMzNTCCGEw+EQf/jDH0RycrKIiYkRd9xxh7Db7UIIIVavXi0SExPFc889J6Kjo0VcXJyYO3euEEKImpoaERwc7H8ZDAahmFeFd955R2RnZwuz2SwuvPBCUV5e7t8HiNdff11kZGSIsLAwcddddwlZlk/03KNKIZ9KyMClKJmY8P297JDtH/iuvRkwS5IU31MB/ytYutys3tdIs9V5/IN/JpQ12/hgU7lflS/Aj4dXFjy9fC+Xv7aR/NqObvt6eqZe+raIN9aW8N+d1YCiLXOylDXbuPTVDd1S4X1d0ED/R1by6uriI44XQnDvpzm8+M3+HstzeWT+tXIft763jfJmGzsr2w50Fs8Idrud+fPnM2bMGAAeeugh9u/fz65duyguLqampobHH3/cf3x9fT0Wi4Wamhreeecd7r77btra2khISMBqtfpfl19+Oddddx0AX331FU899RQLFiygqamJc889l+nTp3erx5IlS9i2bRt79uzhs88+Y+XKlSd87lE5mtUX3XvpZcBOlNWpt/u2tR+yXzrwGVgCjD9k37co2ZgOL/N2FB/V9pSUlJNrgn8GFNRaxKgnvxapDy4RM+duOeXyZFkWHq98zGOKGjrF62uKu7X+p5vfvL9NpD64RFz35qbj1ifAqfHGmmKR+uAScet720Rli018tLnc3yv/aldNt2OtDrfo+/flYvpbm8S2shbx6KI8kf235Sf9P3p8cb5IfXCJeOi/u8Weqnaxv75DXPzSev/IodXq7Hb8vK0V/n0Ot0fIsiwcbo8QQojqNnu3kUefvy0TqQ8uES9+vf/kbsxJkpqaKoKDg0VYWJjQaDQiPj5e7NmzR8iyLIxGoyguLvYfu3HjRpGWliaEUHruer1euN0HRy3R0dFi06ZN3cqfPXu2GDZsmL/HP3XqVDFnzhz/fq/XKwwGg78HDoj169f791999dXi6aefPtFzT7nnPl4IMQz4NXC3JEkTDmsgBEpmkRNGCPGWEGKEEGJEdHTPLqOfO7ur2rnmjU1ISEzqE82awiY2FDezurDRHxr4Q3ly6V6mvrgOS5ebOktXj72eV74rYvbyfZQ0WU/1K/SIyyOzqaQFgE2lLTwwfxcW+08VRPPLp7ixkynPryGvxsLSPXU8u7KQqf3jePum4SRHGJkxOpVnrhxIfJiejzd3DzKbv60Ku8vLHy7sw4i0CPrGm+hyeylvUQJLdla28eAXe/j3qkJsx0gqfYBcn9Lkp1uruOSV77no5e/JrbEwtb8SVHP4MzZv28EFamsKm3h3Qzljn/6Ohg4HV7++kcpWO89fPRi1SvJrPr3wzX7O//daqtvsHM7XBQ28uroYh/vIdBDFjVYGPrqSDcUHM9utyKvn4S9zabUdKV/s8cr+kc7ChQtpb2/H4XDwyiuvMHHiRKqqqrDb7QwfPhyz2YzZbGbq1Kk0NTX5y4iMjESjObii2mg0YrUevAfLly/nP//5DwsXLsRgUFbOV1RUcN999/nLjIiIQAhBTc3BRftxcXE9lnki5x6NEzLuwqcLI4RoREn3NApoOOBu8f1t9B1ew0H5X4AkDpMe+KVic3q4ae5WHpi/ixark/vm5WAyaFlw1zhenj6UqBAdM+Yocql3f6LMMXu8Mqv3Kcb+gKG2OT209DDc7nC4+XhLJUWNVmbO3crYp7/jk62V/v0Ot5enlu31r0Zdva8Jt1fmix3VdDqOb3yFEHy2rYrznlvDU8v2HvW4rWWtdDo9vH3TCO6Y0IuluXW8uubIIXqAI/HKgrJmGzXtXeyr7ziikRdC8MiifEqabFz88vfc/clOBiSG8dw1g7tJQ2jUKm4dn86WslY+3VrJwpwamjqdvLG2hNHpEX6Z634+zaD82g7sLg+3vb+dZbl1vLy6mJe+LTpmXStaFLfJBf1iSYkwEhUShFqSmNwnmod+nQ10N+4dDje7q9q5a1JvIoN1LNpdy/xtVbTaXFz+6gZqLQ7eu3kkVw5PYlRaBGajljduGAYohvqFr4u63Q+7y8NdH+/gXysL+fvCI6OGD6xe/suCXIQQbCpp4c6PdvDxlkqW7qk94vh7Pslh8r/WIB/SIVq8p57n95uxuwUrV6/DYDCQn59Pbmkt2/dX8fySHHLLu0ePyrIgr8ZyRMeqsLCQmTNn8tlnn/kzLwEkJyfz5ptv0t7e7n91dXUxbty4Y97/Uz33uNoykiQFAyohRKfv/YXA48AiYCYw2/f3K98pi4B7JEmah7KIySKOsTr1VKht72JHRRvxYfojNLVdHpm7P9mprL48P5NBSQcV4oQQ5FS18+6GcswGLX+7uO8pLzOXZcF983JYt19p5b/MqUGrlvjgltF+7ZsnLhvIvZ8qBn95Xj3VbXbe3VDOO9+X8fzVg5m/rYomq5OqVjteIVjw23EMTQmnokVZTj9/WxVdbi/TBsaxLFcJQ374yzy+2FGNSa9lZFo4b61TUnLpNCqW5NbR7JOp3V6ezOwrB/F9UTMmg6bb/QBFeOyK1zbS5eshvbWulA82lfPq9cOY0re7Vs03exsI0qgYn6GseN1d3c73RWd77uIzy4biZgpqO/hmbwNbylr927NiQ/jPdUPJjAnhscUFLMypodPp8cv+3nJOOg/9OrvHFHIzRqfy1rpSvwa5WiUhAW/ceDBNW5+4UKJCdHyVU0OJT1Pnv78dx5z1pXy2vYoZo1NZmV9PelSwX5NIlgXPrNzHR5sqCNFreOjX2SSHG3F6vDjcMuFGLZIkodOoKG48aNw3lbQgC5iYFU2nw8OHh4wqai0Orhia6JchfubKQXQ4FBXUD28dxbLcej7dWkllq42PbhuNTq3i+VVKUpGs2BCW5tZx75RM3F6ZWJOepk4ni30JNSpb7WwubeWxxfkkmg3YXB62lrdx49g0ZFmwLK+O/fWdrMhXfjNtdjevri5meWs0X+ZUE9m8B6etg4XlKm677TYuu/F2Ggdcj2Q04+ls5glLNetfesD/XR5emMunW6v4x8X9/Nv2VtRz2aWX8uSTT/rFwQ5w55138ve//50hQ4bQv39/LBYLq1at4uqrrz5CDvpwjnXu8TgR4bBY4Etfr0EDfCKEWCFJ0jbgM5/uTAVwIE/qMpSImWJ8i5hO4BonRU5lO7/7NAdQMrNcPCiBDoebsiYbH2+p8CcvWF3YyJXDkpSMNlXt1Hc4cHmUvI5Oj0x1m53z+8USG6onOz6U6NAgvi9qpld0COk+edbGDgfriprZUdFGQa2FNrsbjUoiSKtGlgVWp4ea9i5+c246b68vA2DRPeO7qS1OHRDHnkcvpLa9i/OeX8v4Z1b79/3hc2UNRlRIEBf2j2VZbj2vrSkhOy6U19aU4JUF8WF6/jotm1vH9yI5fB8FdR2sL2omp7IdgLX7mxidHsGt49Nptbl4aEEuu6uUff/dWY0kKcNrALNREbp6afpQMmJC+MuCXLrcXu6c2Jtbx6fzqxfX0Wpz8a+VhX7jLoTg8+1Kxpop2TH+nJPn9I7i+a/302pzERGsI6eyjXCjjrSoYL7YUc2W0hbumNjrmBlnToVWm4v9DZ1o1RLDUsKPKX5W096FQavupkEuhGBDcQuZsSHE+nJk2pweGjocpEUG97jq9mh4vDIeWaDXqpVYY0niix3V/OmL3Qih3Pd7p2QSEqTGpNfy76/3c9PcrSSYDeyuaifRbOCKYYk8fFE/cioVfZyjfR+DTs2/rxnCS98VceMYxUhP7hPDsJSDyWm0ahXTR6Xw8nfFfLuvkUsGJzA8NRyvnM6K/Hom/Et5Bo06Nd/9YRJNnU4e/O8eCuo6+L/BCdx/fia9fEqjOo2KQxcXp0UaeXt9GUadhqEpZp5fVUhUSBBDU8LRqCU+3FxBqF7Dg1OzqWqz84cL+vjPTYk8KNZ3bmY0Y3tF0jc+lH98lc+sudtIizLy6dYqrh+dwsWD4rn+7S2c+6xS12CdGpvLi0qC928ZxV0f7WD620p+oFeuH8qq/AZWFdSzMKeGT7dW+hvT8/vG0C8hjD+/7uWrZ+8DSYVGrULfK53b//48K7vC2Ks/j5auesS8P+OyWYiIjqMjYwqLdtdSnltLi9XFp1uriDUFMXvFPuwuL2XNNm6Y+y4NhYX87r77eeABpSFwe2VW7iqn39jzuf43jYy54BI8liaiIsycM3Eypn7n8vQxRsgAl19+OVarleuuu46KigrCwsK44IILTsi4/2BtmRNFkqSpKPHuamCOEGL20Y49WfmBToebhg4Hc9aXdfP1gZLr8YYxqVw+LJHnVxbyydZKQoI0nJMRRWK4gSSzgUuHJrJgRzWzV+zrUfPdpNfw6oxhbChu4Z3vS3F7BaF6DYOSwogIDqLe0oXbK4gIVhIHn5cdy5XDElmws4Ze0cEMTTl6Bqjxz3xHdVsXM8emUtpsY31RM3+8MIt7zlMULB/+MpePtygul6uHJzHrnDSy40zdNGEsXW7e31jODWNSeXrZXpwemUf/72DyhBV59bh8GXEe+Srf33MBiDUFoVWr6OhyEx0aRFmzjZemD+XiQYpyXZ2li8+2VfPCN/u5c2JvWm1ObE4vS3OVQdjTVwxk+ihFzXNPdTv/98oGfnNuOudlx/p/aL2jgylpsqFWSYQbdXz7h4mEGbQIIahosdNic6JRqfDIMrurLFS22hmZFsHAxDBKm62M7R3ZbUR1IEPQATYUN/PR5opuqpA3jEnhsiGJvLK6GLVPJqG40crN56RRWG9lQU41USFB3DmxNwMSTKwqaGDJnloaOpxEhej420X9yI4PZebcrTR0OBmaYuayIYlsr2jjprGpNHU6kVDURjNjQlCpJIQQ5NV0UNFq47XVJTRZnVw6OIF526pweWVcHpnxGVG8eN0QIoy6bo3FvvoOHpi/G4fbyz2TM7hyeNJRn5mTpcXq5Imle0k0G/jdlAz/Pdxe3srGkhYGJYVx+4c7mJAZRVGjFYfby+8vyOLakcdWa71/Xo7fBQjKyOHdWSOZkBXtL79vvOm4ctWH8sGmcl76tohmq4urhyfx7FWDkAX8+Ys9xIfpcXlldlW1MzItnGEp4UzpG8tfFuzh061VTO4TzdxZI5m/rYqHfKOZpHADt5yTzriMSLJiQlGpFCVXRZ/pYEvl8crMXr6PFpsLp8fLM1cOItSnETXtP+sp8ElBR4UEcdXwJO6Y0Is7PtrB1kNGYaF6DZ0OD69eP4zcGgtvrC3x79OoJDw+l1NEsM4/JxBrCuLV64cd4Xk4UU6rcNgJXlAN7AcuQFmltw2YLoQo6On4U9WWEUIwb5uS9iwtMhiDTtVjD+5AT+pwLF1u7C4Pte0O9tZ10GJ1kRZl5D/fFvmT5149PIlbxqfTJzb0B/XkjkZFiw23V5ARE0JVq53leXXcOr6X33g3W50s3VNHn7hQxvQ6dX0VIQTTXvqeFquTD24dRaJZyWN583vbaLW5eGX6UMZlRHU7x+r0MGPOFnZXtRNm0OL2ylw0MJ7xmVH8ekB8N1fBA/N38WWOMrWikmBCVjQSMKVvLAMTw7j8tQ0YdRoSzHpcHpnyliMnzwxatd8tBMqDHxKkweb00uX2Yuly0zfexPl9Y+h0eHhvYzkalcRt5/ZiSLKZjSXNfLCpwn+u1eFBrZLIiAlhZ2U7apXEuN6RfF/czKGP/ZBkM1OyY1iaW8e+eiV9WbBOzcxxaXyytZJ2uxuVBIfPgUeFBGHQqfB4FUllUAxccriB8hY7E7OiSTDr0ahU/GVaNkbdiRu5n5rnVxXy8nfKvMm828ec0DPX1OmkstVOn7hQviloYFBSmL+Xfyo4PV52VrQzIi38hFJb2pweyppt9E8wIUmKHPb6omYEgklZMaf8ez1wb35/QRa/Oy/Db0NcHpnnVhXy7d4GbhmfznUjU5j64jrqOxx0OjxM7R/HpD7RlLXYqG7rYtqAeO7+ZCeJZgOzxqUxONlM3/hQfyNyMpwJ4z4WeFQI8Svf578ACF/S7MM5W4XD2mwu3vm+jAlZ0YxKP7mW9WzC4fbi9MjdRMScHi9urzhqxh+PV/anHTyWu8Ph9rJkTx2yEEzuE3NEYvJvChr86o8ur8yU7BhSIoPxyjJCQL8EE9EhQby7oRxQelyLdtficHsJN+ow6BRXytayVraVtyILJVv9wxf19dfd7ZV5dXUxYQYt14xIptNn3M1GLdvKWkmLCibBbKCxU/nxlTfbkIUyXJckCVkWbChpVgxzZjQpkUYaOx18XdDA1P5xrCtqItyoIyokiL11Hazd34TTo9R/dHoEo9IjCDfqSI4w4PTIx5V2Ppuwuzz8c0kBFw9K4JzDGvn/dZweL7nVlhPqXRfWdzJ7+V7iwvQ89n8Djpgr2VrWSv+EHzaaORZnwrhfBUwVQtzm+3wjMFoIcc8hx/iTdaCIaBX+wMsEhMNOjoBw2OkjIBz24/BzEQ5LA8IOufYvXzgMuArFz37g843AK6f5GgHhsJOrXxoB4bDTUb+AcNjpq+NPKhx22LWth7xkDgqKWYEZx6lnHkoj8/MVDusJSZL6oAiHHaAX8A/A7Lv5Qb4H468oLSviKG6ZgHDYLwOvENidXow69REJvmUBrTYnHV0eEsz6bi4LIRS3QJBWTXGDlRC9hqTwI1MnujwyOo2KylY7HV1u4sL0RIUE9XhMgLMbIZTsYWcThwqKnQgWi4WqqioGDBhw/IN/JI4lHHZa3DK+CdQalLj2m1FCIO8Epvi2bwOuF0L0NMQ+a33uARS8ssDp8R5zQjCvxsLvPs2hrFlJ3TdtQBzrippJMOv520X9mDl3K0WNVnRqFamRRhb/brw/XPDeeUoWKLNRS7tvpevCu89hSLIZIQSf76jm1dXFVLTYOScjkg3FyupYnUbFyvsnkB4VjMXu5sa5W9hTbWF8RhT/vmYwKpVEVEgQxY2dvLWulD9e2AfZZ1RiTXocbi9BGtVJ540NoCCEoKCug7TIYPZUW9hR0cqwlHAKGzrpHR1CRLCOUL2GyJAg3lxbwvbyNvY3dLLi/glHzM043F7un7eL8/vFctVhkUNCCJbm1lFY38nlQxNxuJWG3O2VT0uC954SXXd1dfHHP/6RBQsWoFarmT59Ok899RRarZYVK1Zwzz33UFxcjMPhwGAwUFVVRVKSUu/rrruOAQMG8Le//Q2AL7/8kkceeYTKykoGDhzIm2++Sb9+Sqx8XFwcDz74IO+88w5VVVVcfPHFvPvuu+h0umOee6oJsk+EKUCJEKLC90ORUbIxrUQJhZx7NMMe4Oxmf0MnN8zZgkcWfPv7iYTqNawpbGJ8ZpS/972/oZNLX92ASa/h2hHJzN9exUvfFTMiNZzv9jX6F1y9NmMYIUEabpq7ley/r6B3dDDJEUbWFDYRZ9IzKCmM87JjeG5VIU8uLWBQkpm5G8oQAgYlhXHlsCQW7a5hQlY0T142gGkvrefqNzZy+dBEVuY3UG9xcNv4dN7bWM6op74l3Kjl4Yv68cyKfTR1OvlsezVqX+jioCQzu6raiTPpeeX6oYxIi6Cp04ksBC6PTHLEkUnTt5a1Em7Ukhn748Trn2mEEKwramZXZTt3Te7tj1TJq7FQ1mzDZNCSHReKSa/F7vKwNLeOt9aVIgTdhMV6QpIgJEjjz4cLMPLJb7hiWCLn9I5iUFIYmbGhvPxdESvy61mRX8/3RU3887IBlDbZeHNdCbXtDnb51m0ciOw5wIr7zyU7zkSHw01li521+5sY1zuSgYlh7G+wUtWmRC/90EnuRx55hN279/Dx8vX0iwvhkksu4dlnn+Xhhx8+6jkLc2qUtTTeg+HVmzdv5q677mLRosUMGzaUd955h8suu4yCggK/nMEXX3zBt99+i0qlYuzYsXzyySfMmjXLf+6SJUsYMmRIt3OPxSkZ90N03hNQfFSg+KIeRJE2aAbOEUKU93Cuf0I1JeXY8bQBTg+51RYaOx3dVpyu3d9EZYuNG8em9XjOJ1sqaexUpBCG/vNrIoN1tNhcTB+VwtNXDASUeHpZCJbfN4GoEB35dRayYkN5/urBbC1r5ZXVxWTGhDJtoCIOes/kDBbuqsGoUxqKYSlmPr9znN+VIwv465e5bCs/qGb4wS2jMBt1/OuqQf7Qti/vGscD83fz9voyRqVH8M/LBjAxK5oRaeE8sXQv1W1d/PHz3WTFhjBzbCqLd9dxbmYUOo2KVQUN3DQ2lXX7m7jmzU2MTo9kU2mL/3rn943l2asGEarXsLOijUW7a/l4SyVGnZpZ49Jo6nQiUFQTK1pshBm09I03MSTZTFWrnZHpEf41A0dDiJ5Dcw/H45VZsqcOvW/xVUiQhkcW5TGpTwx3T86gqdNJUUMnY3pFdgv7y6220Gxzcm5GlD9nrFcWSHBEeGBejYW7P9npz4m7r76De87LYO3+Jp5dcfRYh6EpZqJDgrhhTCq5Ne3sq+/ktRnDqGlTIqzqOxx0dHnIq7Wwq7Kd/xuSQJBGRUWLna8LGvg6v4EFO5UQ2gOjsksGJ5BoNvDWuhJ/HL1JryE8WMc/Lu7HxYPiWZBT428snlmxj0W7atlmbuPxxfm4vT17I4ammDmnt/L/31NtYWiKMjLcVWWhX4KJnpwYH3/8MVc88DS3zCskMyaE0ZffxitvPotpzDVU7G3A5vLw4aZyCmuUOdM91W3cv1BZn9JR2ERimhIi++abb3LTrXdw85IWBu/exj1TrsT55JNs2bqNkaNGA/DAAw8QG6v8NqdNm8auXbv8595zzz0M/3/2zju8imrrw++ckt577yRA6L0TugqWq6BiBfUqXvVasPcuYseKIBawIJ2L1NBChySQBum993ZOcup8f8zJJCGhCV71fvk9Dw/JZMo+c2bW3nvttd41VMo8vv/++3nrrbdISEg45/cCl+mWsRj30UAK0mJmhSAInyG5Yt4FYpE48APOd57LccuYzWKnB1VnNHE4p4YJvTxRKqSY13MVQ9bojBTWas85pUssrOOT2Czmjgjkqn5XnlrcajBRo9Hz2C8nyavWsufJiXJx7Z+PF/Lejgzinp50zjDFS1WvF7ZiMInsfTKGUA97DCYzvV7YBsDr10dz11kGXhRFxi/eS5S3I6Ee9sRlVaHRmfB0tOZUUT0PTQrn1uFB/PuXk5hF2PTQWEAyIGf73LuT0WRmw8kSYs4KnRRFkc1JpeRUNjMw0AUrlYLxvboPCDCbRTR6Y7exwluSS2luNTJ7aMA5n4GGFgMf7szgYHY1Y8I9CPe0p7HVyGd7srFWKfBxtiHLkmI/f2wIp0sbOZZXi7u9FUqFQKiHPSHu9tRq9SQX11PRKHWECkHKvLRRKwh0tcNoFmlsNVBc24KjjYqiOi35NVqi/Zx4YlokSoXAsGA3VAqBLSllbDpZgo2VkpTiBowmM6WWOPqz9fr10aw6WkBmRTPDQ1z56o6hqBQKPt2TxYpDeZhFGBYsJfusOJRHTbMOpULAz8WW2UMCsLdWkV3VzPrEYtztrXlsai8Ka7Us3Z8rjzxn9vflkSkRNLUaOZFfiyhKeRhppY0su2vYBevznk9Gk5TzsPxALjvSyrlxSADPXt0btVLBuoRiNp4q4dqBfkzt490pq7ij7lpxXMZ+xER5MjHSk0lRXiQU1FFYqyXY3Q6NzsgX+3Ko1DZR4AAAIABJREFUtMzO/F1sKa6TZhthnvbkVmmoXHYfH376BZMmT2XDyRJ6+zhw47BgfO9bitrVlyFBLhw9kUj5T88Q9PgaWnITqN31Ff4PLEM06in84EYiH1uJl68f780eyKx/zMbaM5iJtyzgt0UP0lR0BhQqOWdCYTbS57bnefTeO3hxzhjWrl0rowueffZZqqurWb58OZMnT+bYsWOo1e33Wa/Xs2rVKm666aY/1C0zBUgURbEtxGoaECOKolkQhGeAg1fgGt0qsbCOFzak8vr10Xg4WBPqYc87W9OlaXmIG6PD3VlxMI9xvTz44OaBXXzGb209w0/HCrl+kB8vz+qLe4fFuYYWA3csP4bBZGZ/ZhXr/zWmU1r35apBa2CGJeGhTfszqrh2oB9msyjzQg5kVnF1/8vvWNJKG+QRzb3fn+D2kcHYWbVPUd/eeoZJUV6d3BFrEooprmvhXzER3DayfXZlMJmZ/eVhPt+bw/IDeeiMZhZOi5T/fjGGHST41ZxhgV22C4LA9YP8L+ocCoVwziSQC42cAZxt1bx2fdcFsRnRPizdn0N2VTNvXB9NP39nOeO4RW+S0QsdJYoi9VoDggAvbEyluFZrYflXYa1SYGetJMjNzpI3YM+YcA+2ppRx5zfHASmL0VqlQKM34WqnprHVyOTeXlipFDwX7UOgmx1l9S1UN+sYHe7Og6sSeXmT5O0cHuJKcnED139+CLNZpLyxlZuGBDAsxJVXNqcRXyChDG4dHojRLJJUVM8Hu9qZ6z5ONvy6YDT+Fg7SfePDWBNfhJONmhsG+8uL1MN/ZybluaRSKojwcmDRTQNYdFPnMeBNQwMuKmP3iWmR5FdrLCCyobLrJcSCDmnTnaNDaNYZMZlFnG3VVDS2Iorg42xD7OkKrv7KzCubT/Nhmg0GS/6Fws4FY2Ml7987XcI4fFvIJwcDOfPW1fy01sBLx2049OxkSuu0jPxYRX9vGz59YDS+zraE2xtptrOivKEVDx8/lMFDGHX9PNb/awxr4oss6AYl4V7nT/wKDAxk5syZLFy48NLu7SXt3VUisARoFAThflEUvwZ8xHZQ2DikMKAuuhJuGbVCQXGdljlfHcHJRsWNQwL44Ug+dlZKsiqbOJ5fy8BAF7anlRMUa8dz1/TBZJYWZeq1en46VkiYhz1bU8pIK21kzQOjcbWMDo7l1qDVm/h23nAWrkli8fZ0vps/Qn5wKhpbqWrS0c/f+Xe1/e2tZyhvbMXDwYp3bxrA02uT2XW6gmsH+rE1tZ2ztutMRRfj3mowcfeK4zS2Gunt48jC6ZGcyK9FrVR0a9D2plcy/7sTALw4sw+rjhbwxhbJXxfl7cjyu4dx1cdx3PTlYZbMHcyoMHfiMqt4Zl0y4yI8uHFIZ0OrVipYfvdwYs9UsOpoAaEe9tw3Pux33Ye/qqJ8HPnwlkHd/q07ww5Sp9T2/Hx+2xB5+/ncL0/NiCL2TAVqpYLUkga0ehODg1zk7/HsjnJQYDvwbefjE0gpaeBMWSNzhgaSVFzPs+tScLJV8cUdQ+V9p/X1IbGgjolRnrIfXRRFimpbsFFLfCVrtQKvDuAYZ1v13+Y7HRTowv6nYjCLFx5YdJwFe3fAD0zt642vsw3TB/iSihXfzh/O/swqdpbN4XTyJiYE3UdlZSWrvvqYeXffiVqpwNvZBiuVAn8XW/xdbBk8cADRLSl4OfyDzZs3cyrhOC+9NIMXn4zhwEgV/7j5Vu575i6sVQr+0d8D56pkpk6dip1d1/Wdjrr//vu5/fbbmThxIkOHDkWj0bBnz55OC7/d6XJCIQOBX4HhSCGP9sBcYC/SgqoR0CPFyJ63a7oct0xKcQPfHMxl46lSBAFuGRbIS7P6olQIaPUm3OyteHJNEhtPlhDu6UBpfQtNHUhs398zAiulgru/PY7eaCbMw575Y0PYdKqU1NIGkl6ZzrqEEp7fkIKfpV5lmKcDBy0M6binJnWCIBXUaPjxWCFjwt2JifLqts2/HC/k2fUpPBgTzjNXSejU5zek8OuJIl6+ti8fx2bh72JLhJcDO9LK2fn4BAJc26+xZHcWH+7KZGyEO0lFDSgVAk2tBsyiBFB7Ylokn+/N5rvDBdw1OpjKplZWHS1kwcRwnrkqCkEQWHEwj0Xb0/nxvpEMD3HjdGmjxeeqobePE6fLGgn3tGfzw+OuWDZdj3r0V1ZbtMyUKVPkzlir1bJw4UI2bNiAQqHg1ltvZdGiRVhZWXWKlgE4cuQI8+fPp7S0lNmzZ9PQ0MDgwYPlaJnNmzfz2muvkZ2djb29PRMmTODbb7/F1tYWHx+fc7plznesnZ3dlc9QtTDcfUVRTBQEwRGpzuo3wD3A56IovmLZZ58oilHnOdUVCYVMKqpHrVTQ16+r/7xBa+D9nRnk12gIdrdjdJgHIR52nCqqZ+7wIBQKge2pZTz6yync7K1kTsjoMHd+vl8qvxWXWcUPR/JRCALZlc0426k5WVjP1f18+OL2IQiCwL6MSv71YyJavQkrpYLVD4zqBA8rb2jl2fXJ7MuoYnwvD1bMGy6PpBpbDdz5zXGSiupxsVOzdsEYbNQKZnwUR7C7PUvvHIqHgzUn8mu59/sTTI/24fPbhpBXreHBVQlo9EZGhrqzNqGYQYEuclSBIEgxxZOiPPl2/ohO9+Vs90KzzsgLG1I4lF3NP8eHcdPQgC5x5D3qUY/+OvpD8APdcN6LkLLzZiGV3JspCMKzgJsoik+f71x/lTh3o2UBKb9Gw7G8WgYFuhDtd263yxf7slm8PYO7Rgfj5WjN0rhcAlzt+GDOQP75Qzw2aol5nlraiN5opr5FT22znnvHh/HwpIguyTZ6o5mNJ0sYHOQih9vtzajk3z+fxGAyy+RKfxdbfvv3OFzsJBeAySyF79moFfx0vJAXNkhUgx/uGSEVDtHoef6a3tw/Ifyi7sPFRnH0qEc9+nP1Rxn3MKSqTCCFP3oBQcALwL9pD4UcJ4piXjfHd/S5Dy0oKDh7l7+8zGaRp9clsz6xGLMIoR72/HDPCALd7Ig9XcF9P8Rjb6Uk2s8ZGysl9Vo9j0+NZFLv7t0151J+tYZPdre7aib38ZKjarpTenkjycUNzBkaQJ3WwPrEYm4eHnjeY3rUox79/fSHgsMEQXAA9gNviaK4XhAEbySjLgJvILlu7rnAOaqQCn5cinrAYb9PPeCwK6cecNgfo78LOKytnW339O8FDkOqh7oXyTClAY9atr+KFM/eaPn/mg7HPGf5cDlA/h8BxaEHHPZ72xdCDzjsSrSvBxx25dr4p4HDrlA7zwcO01raHtP2nQP3Ia1FgjQIjjjrOq8Cqzr8vheoQrK1ScD1F9PeC47cu1k4TQBuQCqrNws4KIriYx32nwB8ilRE+0XgMcsN6Vq+3KL/NXCY3mQmo7wJtSWGV3WB8KxWg4nKJh2CAPZWKjlZo7S+hRqN3pIyL5Voc7e3xkbdNSFHqzfR2GrA0VqFvbUKUZTOW9bQipOtSl4YbTWY0OhNONmoUSt7/Oo96tEfqZSUFEwmE97e3vj6SiHN1dXV1NTUEBUVRUJCAtHR0djYtIdllpaWotPpCA0NBaSIHVtbWwRBQKPRkJmZSb9+/VCr1VcWHCYIwibgM6Swx/lI2altEIXngTeRXBGVSBE0jsDzoigeOdc5/yoLqh3VajChVAgXVQmmWWfETq2UM2WX7s/hnW3pAJ1K53VUdmUTCkEgzNOBVzensepoAZ6O1pQ1tPLolF7MGRZAzHv7iPZ3JsTdjha9iV1npNnfbSOCGBLkir+rLfH5tZwpb2JnWjkGk4hCgCdnRJFW2shvyWVyNtx384czLsKDMYv2UNmkI8LLgdyqZoaFuPHLP0dxuqwRL0drCmu1VDfriPZzxt/FVv5MlY2t6M7BXOlRj3rUvUJCQliwYAGLFy8mNzcXFxcXli9fzqpVq9i3bx+CIJCVlUVERIR8zKuvvkp2djarVq3qcr7jx48zYcIE4uLiGDFixJUDhwmCEAIMBo4BY2n3kycCC0VRrBME4RrgqCiKqyzHfIPkLzv7XH8JtkydRs8nu7M4WVjHsBA3rFQK9qZXkl7exH3jQpnRz4fHfjmF0WzGVq1kcm9vBgW5MLWPF+UNrTzxaxKniupxtVPz0qy+TOnjzcZTpQwIcMbOSsmqo4U06YyEuNvjamfF6DB3nO3UPLgqERHY9fgETuTXMiLUjR/vG8nty4+xJbmUxMI6FAqBr+4Ygq+zlDVY2dTK+zsyWBNfLNdXBSl6ZlyEB2/f2J+3fjsjs0CGh7iy6KYBzFxygH0ZVSgEQebEtFWtP55Xy6pjBXKmY0eN7+XB9/NHoFAIXPvZQSoadWS/dXWnVP4fjxXQy8uxU6WqtQnFhLjbMSTIlfwaze8qvdbUauiSeSqKIlXNOjnZpl4rFSs+U9bI+3MGytFHtRo9tRpdp4LcRpOZqmadfC971KP/loYNG0ZMTAzvv/8+b7755u86x6xZs4iNjUWn0zFjxgyGDevWnnfSRRt3y8LpOuAxURQbBUH4EmnBtG3h9AOkGPeLkihls34N0sj9Yo/rKIPJzI60cq7p58tHsZlo9SauG+hHgKstedUauSxWVZOOH47k425vRUyUFx6O1iQX1/Pc+hQaWww0thoZEuTCNweloB4ri/Hak15JY6uBhhYD1/T3oVZj4NvDeYiHpDJwOqMZo8nM41Mj2ZNRyRO/tq/pfDBnIE62ah5ffYpvD+WjN0qTGycbFSaziEYveamO5NRwpqyRRyb3QhAEpvTx5o0tp8mp0rDoxv6djJGXow2LZw/k7X/0J79GS2Gthmg/506Zdp/OHUxjq5G4zCo+nTsEH2cbBge6ciK/lsYWA442Kj6YM5D7VyZw1+hgfjhSwCubJcP+z/GhDAp0xdVOzdrEYtYnlvDc+hRevyFaZqbEnqkgwsuBhb8mkV7ehM7yuXLevgalQqCx1cBz65MZEuTKoEAXlsbl8uHNA7lxSHsaeV61hqJaLYODXJjz1RGeviqKMA8HcqqamdLHW07yGhfhwehwd1zs1Nw2Ioin1iazOamUPQsn4mijZuqH+6lulgoN12n1XD/In37+Tlz18QEAFs+W0tnnDA1g+cE8PtqVyYGnJ8mFkQ0mM0W1WrydbBCR0v/jMquY3NsLlVJBZVMra+KLuW1EkJx5anl2Kalv6ZRYdrbOlDXi52KLs626C/+oR///9PrrrzN27FgeffRRQAp7/i1ZykQfNHgwKmV7vklrayuzZ8/udPyWLVswGAzExsZy5swZFIoLexQuyrgLgqBGMuw/iqK4HkBsZ8kgCMIyYIvl1xKkRdg2BVi2XXGtTSjmufUp9PfPJaWkAZVC4JuDeVipFOiNZkI97LFRK2k1mMiv0SCKwH9O4+VoLY9gp/bxYuH0KPr4OpFR3sTejErmjw3h49gsvo7LpbpZx6TeXiyePRCQEpEyKpp4bXMaDVoDax8cQ5SPIwtiwjiYVc2a+GLcHay4cYg/giCQ+toMRFEkvbyJ8sZWVh4pYE96JSAZkwdWJWAWkQsST+ntxZu/neaWYYHcOqL7GU0bjyOiGyaFIAh8N284tVq97GcfHuLKkj3ZpJU2cuvwQKb28ebjWwYxI9qH43m1pJc38cM9I+Sq9QCjw93xdJBi913s2kfQz29Ixd5aSVFtCyND3eR6pttTy7GzVtLYYsBgEokvqCO+oA5rlYInfk0ipaSBV66NJrOiiekfxQHwYEw46eVNvLwpDWuVgpwqDd/fM4IXN6biYK3iUE61nAmsM5hZm1AMwCbLzKi6Wc8HcwaycE0SB7KqOZBVzSOT26e3z61PwWQW5Q5UZzTza3wR1iolK48W4GpvRVJRfZfi17cOD2RcLw+eX59CY6uRqiYds4cGyKiJ93Zk8MW+HH7650jGhLfXG00qqie5pAFRFHl5UxrOtmqi/ZzIq9aw+v7RnTKZe/S/LbNZ5L2dGVQ26diXUcnrk6cwZfrVvPX22yhcA2UKJ8A97//Kkgeulo9tc8ucLbVazdVXX80nn3xCREQE11133XnbcDELqgLwPVB71sKpr2hhyAiC8DhSjdRbBUGIBn5CWlD1A3YDvc63oPp7fe5ms8gjP59k5+lyFk6PYu6IIDadKuFgVjXeTjbkVWsQBIk3/vY/+iMIkjvilxNF5FZpeG/2gG7BVSARBR/+6SQAn9w6qAvISm8006I34Wx36bHjS/fnEF9Qx52jgvnucD4TIz25a3SwnDiUXdlEqIfDRQO4LqSU4gau/Uzit51d2X5nWjlFdS3cOy60y3Fms8jwt2Kp0Uij4xXzhvHSxjRK6luYNyaEV6+LxmAyM2HxXjmrF5CNpYeDFRsfGssrm9I4nl9L0svTuX9lArFnzo7G66qf7htJSkmDvHYBUsdX3yLNpG4c4s/i7RkkvTydT3ZLBESQAFh1Wr08owj3tCenSoqYa8vWBfBwsKa6WScXFtGZzHx/OJ++vk4kFtZjpVLQ28cRQRBIsmT7LrqxPysO5ZFZIbm0RoS6MSrMnR2p5UT7ObEpqRSTpZeIifJEFOFQdjU2aiWu9mqsVUom9/ZiQIAzLXoTswb4yRnCtRo9OVXN+Drb4Otse8W++x798cqtaqayScfWlDIemhSBt5MNR3JqmLvsKOVL78V5xiOEDxxFQX4uFd8/hsOwGzAWp7J683ZmDfQjIyOTyMj2dbnz+dwBpk6dysyZM3n88ccvL85dEIRxSCE/Zy+czgUGIbll8oEHOhj7F5BcNEYkN862813jcpG/DS2GTtPmizmmoFZLiLvdOTMx86o1THp/HwAZb16FtervU8m+O+1MK+dAVjWvXRd9SS6CBSsTJPCamx37n4qhvLGVz/dm88jkXrI76PO92by3Q/LzO1qrePvG/vxyopB5Y0KZ1tebtQnFPLkmCTd7K2o1ep6YFomTjYotyWX4ONuwxTI9Hd/LgwNZ0kg96eXpONtJRSGGvLELX2dbNj40lh1p5Ty9Nhk3eyvsrZUceHoyZrPIqeJ6bvziMCCheb89lA9Irhk3Oyu+P5LP3aNDSC6uZ0yEVBxif0YV0/p6y2sIRpMZjc7EiLdj0RnNrF0wmnqtgft+iMfP2UbG7j40KRwHazXvbpc6HjsrJVq9ieEhrkzo5UmNRs8LM/ugVipoNZhIL29i/rcS+bFO2x7ibKtW4mQrMcl1RrPcMaiVAjcODmBoiCtONiqcba0YHd7eIbdJZzTRapDWgqxUCmo1etTKc1My/26qadZhFulSrQmkNRlrlfS5syubOZpbg4eDFYMCXfFxtsFkFjlT1khGeRMudmqadUYaWgzMiPYhq6IZK5XkdtMbJfqjvbWKVoOJghot5Y0taPUmWg0mpvX1YUpvL/QmMycL6ziYXU2d1oDOYGZSb0+UgsDLm9JkPHKIux13jApmf2YVx3Jr0a16kHnPvkOlYyTbUsup2bYEXfZRRg0bRNz+/RdcUE1PTycvL4+YmBhUKhWrV6/mnnvu4ejRowwZMuTyFlRFUTxI92THrec55i3grQud+0pIoRAuybC3HRN6Fg70bIW42/HI5AhmDvD92xt2gOnRPkyP9rnwjmdpVJgb29PKeWqGBBzzdbblzRv6d9rnjlHBFNZoeWxaL9zsrbBWKbl2YDudcmiwxNep1ei5a3Qw/xwfhq2VknljQzGazIzv5YGvsy0msygb97YZkZ2VipX3jsTf4r++bqAfi7alU6vRMypM+jwKhcDAABc8Ha0RRZEFE8NZn1hCQ4uBEHd7RoS6MbWvVASh7X+gC21TpVTgbKfgtpFBpBQ3MDTYFUEQSHttBmZR5It9OUR5O3LDYGkWN6m3JyazSISXAxsSS7i6n2+XmZyNWilRC5+ehLVKQX61FoPJjEZnZFtqOS16E442KmzUSoYEu1DRqCO5uJ7VJ4pYHV8kn+fhSRFE+ThS1aTD09GaaD8nZn91hFqNHkcbFXNHBLHiYJ5cQtDfxZb5Y0Oxt1aSXNxAfrWG0oYW1EoFM/v70sfXCZUlFFYhCER6O3KysI53t6djMIlYKRWoVQrsrZRcP8gfg8lMWUMLLrZWFr6+B+4O1lQ16ViTUMSU3t7UNOv4/kg+L83qS161hn5+zthbqyitb0FnNGMwmQl0taOssQWVQmB/ZjWiKNJqMDEk2JUILwe8HKXyh//++SQ7T0szvFkDfBkb4UFSUT2PTY3kdFkDj/5yChc7NUOCXNlkKejRpienR5JU3MCu011niN0FDpwtDwcr7K1VGE0iO9KkcwS52VFYq8VKqcDXxQajSZRnoMHudtw1OgRfZxve35nBm7+dAWBMuDuHLVz/qVOHUtbQwrU0kfzRfhQXifcQRZFXX32V06dPo1Qq6dWrF6tXr2bIkCEXPPaK1FDt9sSCcBXwCVKZveWiKC46175/xVDIHkkymsykljZ2Qs1eqkRRJPS5rXg4WBH/4rRz7tesM9LvlR0A5C+aec79jufV8mt8EbOHBnRyMTVoDdhZKyX08acHSC1p5PgLUzqhbP8uaiskU6vRs+lUCb/GF3fZx8lGxYKYcD7YmYnJLDK5txdRPo6UN7SSWFgnV1UC8HK0JsDVlvoWA7lVXZNNg9zsKK1vwcPBmnAvewxGEZ3JTHlDi7yY3lE2agW3jQhmw8li6rQGRoZKZQpzq9vP7e9iS61GT4uhq0fW1U7daRYDUk3cx6dGYjKbeX9nJg9MDMNgFGWXG0CYhz15NRqC3ezIr9EiCHD/+DDuGBVMWUMryw7kykb931N6cU1/H2qa9bjZW2E0iZzIryXIzQ6TKBXscLSRxreNLUapsIqbnYz1NplFNpws4Zl1yZjMItP6evPKtX0JcLVDFEVyqjS0GkxEejvKkVqiKFLRqGPl0Xym9PG+ojUgutMfih84xwWVQCZS4Y5ipALZc0VR7LboX49x/99XYY0WZzv1Bav2/Hy8kN4+jp1omr9HD65KIC6zitTXZvztIWhms8jGUyUEu9sT5mHP7vRKDudUM3toAGPCPXh89SliT1ew58kY2YVhNJnZmlqOKIpM7eMtY5vNZpH1J0sQkLj0BpOZisZWkosb8He15b5xYZ3cIDqjiYNZ1bg7WBPqbk+TzkCdxsBHsZnsSa+kr68T0X5OrLEsdt8xKghfZ1saWw18f1gycJOivOTCMAkFdXJU2lv/6Cdx60WIL6hl0bZ0ueqVp6M1x5+fAsCbv53B09Eard7Ekt1Z3DjEn7f/0Z/08ib8XGw6dd6NrQaWxGYxOMiVa/r7XJHvfk18EW9tPcOuxyd26yL6M/VnGPfRwKuiKM6w/P4cgCiK73S3f49x79GVVnx+LblVGm4e3v2C+f+SWvQm6lv0//UY/laDCRu1koYWA//++SR9fKWSgW2j2HOVuNx0qoSfjhXyw70jOrk8Ww0m9mdW8fKmVB6bGsncs6LF2vzo0X5O//UOWxT/mqTUy11QDURiU3gjLZ5+LYriJ4IguAGrkRgg+cDNliQmAfiN9iSneUi8ipGiKD7c4bxyEhMSROvcVXi7Vw847PepBxx25dQDDvtj1AMOu3gFnws/cDGwHF9giOVnRyR3S19gMZ2BU+9afr4GKWN1ORIg6RhwJ/DZFYb49IDDfl/7QugBh12J9vWAw65cG/+XwWHn/M6RBsWVgH2HbR2hYgLwFFKH1mJ57t8BrC+mvZfDlvkMqRB2WceKS4IgLEVKWhoriuIMQRAykBKgmsRzuGWuBDgso7xJDkcKcrPr5NsVRWmxzlatlCMEzqcWgwkB5IWV8ymnqhlrlZIA1ys/Ja5s1NGsMxDi4cDlhj2bRfGiV+h7dOVkMIl/KqBNBMrqW3CwVuF0gfWOy7qOKOURtMksSguL7vZWFNRqaTWY6H+R9YZFUapR7O5gLd+7plYjtlZKGcJnNIsoBUG+psksXnZuQJspNIuinLH8R8ksQlrq+aFihYWFNDY2EhISgr29Pa2treTn56NWq+XQyfOBwy6HLeMtthfCLkeaioA0ffoJmCcIQiiSoZ8N/OOsc3Viy1yOz71Ba2Dg6zvbz61ScMv4UO4cFYKPsw2/xhfx9NpkRJWCw89OPm/puLaYbFu1ku3PTMLDwZqGFgOVja1ydaQ2lda3MGbRHgCenj2Am8+REGUyi7y0KRUrpQJrtYK7RofIVeYBUksa+HBXJgMCnOnv70xvXydEUWTcu3txAqYMDWBilCcTIz0vKYZZbzRzw+eHsLNScrKonjtHBXPjEH8GBHQf+VJUq6XeEsHQP+D3Ff7+I3Qouxp3Byt6+3QuoZhb1cxdK44T5e3I57cPuajO+L+hHWnlNGgNZFU2sexAHu/PGcjsoQEXPvASlF3ZxB3Lj/Po1F6ybzqrogkPB+tOocEHs6q545tj6IGX5w7mOkuIal61hnu+O4G3kzUr7x15UYC87iSKIpM/2E9etYYRoW4svWMorvZWLNqWzlf7cwgLdKHRkgT2+f2jGBnWNV4fJP98fYsBDwdrtqeWs2BVAk5utux7chJ1Wj3D3owl2NuBnY9PpF6rZ+qH++nj68QP94zgyTXJbE8tY+2DY+jj2/6MfB2XQ02znidnRBF7uoKYKC9+jS+iocXAvLEhvL8jg4cnReDlZMPXcTl8uCtTrnZmpVLw4sw+3DU6pMvn3XSqlJgoT7kS2rmUUFDHK5tT+ebu4Z0QIW14DfuSB1iw4AG+WvIRsbGxnaBiy5Yto3fv3hw5coQRI9rLYxYVFREREcHixYuZPHkygiCcsw7G5bBlOn5gURCEjlMAE/AwsAMJP/CdKIqdfKfiFWDLVDXp+GR3JlN6S/3K9/eMwNPBmqfXJfHV/ly+O5TPu7MHyPVEDSYzM5cc4N2bBnQpXm02i6SWNrDxpERKaDGYeH9HBotuGsAjP58kLrOKEy9MxcPBSl5YOZFfa7k3sCwulzlDAxCgrof1AAAgAElEQVQEAb3RzLxvj5NR3sS1A/2oatbJHAmADYkl7HkyBgdrFZWNraw6KiEJ2rAEoR72DAt2xUqp4LpBfqxJKJajEcaEu7Ni3vBzGjKNzsgPRyTCpKONitNljYAUuvbd4Xy2JJd2G464PbWMBaukdGilQmDvwphu0+UrGltxsZOyLbckl5JTqeG2kUF/WBRBdbOO25cfAzpn1+5IK2fPmUqK61oormth48mSc+Ia/psSRZEFqxLkUaC1SsFLG1O5fpDfeQ3o3vRKlsbl4Odiy20jgmQuUnc6llvD46tPUd7YyptbThMT5YmbvRXTPorD0UbFqZeny6PY2DMVqBQCEV4OvLQxFX8XG4YGu/Fbcil51Rr5X6Rl4LLrdAXPrU9hcJAL9lZKHp8WSbB79zkhtRo9GeVN5FVrCHSz5UR+LV8fkN6Dbw7mEuxuJ797AP9JLj2ncX9yTRIbT5WS9PJ0DlmQE0W1LTy2+hTXDpBGtZkVzeRWNfPGltNUN+s5kFXNR7FZrEssRqkQeHBVAtsenYCtlRJRFHl7q5Rktj+zivTyJkaFuVHW0EpBjZayhlZ+Pl7IycJ65o4I4u2t6Uzt48WgQBcEQSChoI6XN6XhZKOW8xoAThXV89jqU4zv5cHKe0ee8ztq0Zu46UspqW5fRiW3DG9/NttyORpbDHyTrsCn99AuULHdu3cTEBDQybADBAYGMmrUKHbt2sXkyZPPeX2QSuFdUN2xZYAKizumjfleadleAgSKorhVFMVIpNqqb1zMdS5V8fm1/HiskPnfnQAg2s+Jvn5ObHlkPHsXxtDb14knVifx07FCRoe5c9+4UCoadby8KQ2zuXN/8tbWM1z32SEOZldz56hg7h4dzNqEYopqtcRlVgEw/K1Y3thyBo3OCMCxvFocrVW8e9MAsiqbOZJTA0i4g8M5NZhFke+P5LPnTCX3jgsl9bUZ/HTfSCqbdOxILae0voURb+/mlxNFXN3Ph3+OD8XfRYKerUko5raRQSy+aQDPXd2byZbSfIdzauROoDv9llzGu9vTeXJNEsvicvFwsObnf44i7ulJjA5zp7pZT01z57hlo8nMCxtSCXSz5cWZfTCZRb7c35Vt0WowMfqd3fR7ZQe3LTvKwz+d5KPYTB75WeoUGrQG7v8hnuc3pHQ67r0d6fz755NyBualaENiO5boP0mlcjseWJnA6vgiQj3s6evrxHs7Mtie+uevpVc06hBFuH6QHy/P6stLs/rSYjCRU9V83uN+PFZAcnEDe9IruXvFcbIrmwBYfiCXhb8mUVynZfWJQnamlfP0umQUCoHPbxuCSRR5ZVOa/Ow1tRqZ9+1xEgvr0OqN7EwrZ0KkJ0vvHIqLnZp7vouXo1LalNuhbbGnK6hu1pFYUEfsmUpuXnqE7allPLc+Ra4x3KZXN6cxd9lRAD6YM4hZA/z44XA+r/7nNDYqJd/c3TmI46DFqJ2tM2WNbLQkIm04WczB7Gom9/biyemR/CeplCfXtK+Vtr2jz1/TG0cbFZ/tyUKtFFh+1zDya7TM/uowOVXNMnICIL28iShvR47m1sqx/z8fl6iqKSUNPL8hhYGBLnxx+1AentyLhyZFsPTOoYS427E5qXOCVNszdiCrmloLlgOkTj2luKHNby4P/AASC6QOLruymaZWA2fKG5ne1xtvJxvmjQnmpZdf5dNPP6Wqqv07qa6ull01Z8vX15fq6u7vZUdd0Lhbol++Ac6Iovhhhz9tBu62/Hw3sKnD9rsESaOAhg7umyuqq/v78u6NA+TfO7pbgtzt+ObuYTjZSpOTvn5OvDCzL0vmDqawVsune7J5dl0yzTojpfUtcuwtwLAQV+6fGI5CELj6kwOdrrniUB7Rr+wgLrOKuMwqRoS6cd1APxxtVDLYKr1cejHXLBhD5ptXk/baDF6a1RcHaxWjw90JdLNl4ZokFqxKkM87IdKTF2b25eAzk1h80wBmDfDl4ckRKBQCD0wMZ8W84SS+NA1vJ2vWJ3bmsImilOV3w+eHeHpdsrw9vqCOq/p5MzrcHS9HGx62QLW2JJfxn6RSGlokF0xutYYajVTf9b7xYdw5SurYSupbKKjR8OaW0zS2Giiua8EsSn7kqiYdT82I4tmre3M0t5bk4nqW7Mli5+kKfjpWKHeABpOZz/fmsDmplKVxOef9PqubdVQ2tXbatvFUCYMCXYiJ8uRYnvTCpJU2yn/3dLBm8ewBuNpb8cKGFJm+2aaKxlZGvh0rd9CXIq3eKL+srQYT9Vr9BY6QDBXA7SODuWdcqIxCbtueVtpAdmUTh3PaX06zWeREfh2zBviy/dEJGMwiPx8vQm808+ZvZ1iXWMzkD/bzzLoU7l+ZQEGNVs6efmRyL3aeruCT3VnYWSl57ureJBc3cOMXh+n78g5KG1qZOyKIYHd73ryhHw0tBtYkFJNYWM+8MSEAnQ1hRRNjwt1JeGka6x4cQ73WwIM/JvLz8UJmfXqQZ9Ym8/yGFIpqtcR3MGCR3g7MHhqARm8iLrOKuSODOiGXr+nvQ36NlrKGli73bPmBPOyslAS727HsQB551RrGhLvz0KQIxvfyoLHViI+TDbMG+NKsM/LY1EjunxDOsGBXzCL083e2wP0GkFulYfmBXPn+7l44kX1PxvDjP9tH2eN7SbC320YGseWRcXw7fzi/PjCqU8F6tVLBkCBXUkoa5G1JRfWsSyzGyzJL3ZnWPpj4fG821352kN1npIHX0dwaVAqBUWFuxBfUUlSrZeqH+3n4p5PkVUs0V7VSYFpfH+ZeNZZZs2axaFF7nqeHhwdlZd2bzbKyMjw8PLr9W0ddzMh9LFK0y2RBEE5Z/l0DLAKmCYKQBUy1/A4SliAXKRRoGfCvi7jG79bNwwPZ/PBY1j04psvfXOyseGpGFIC8mHNVtA8RXg58FJvJLyeKWH4gVx5R3D8hDIAx4R74u9jy7ykRNOuMeDhYk/TydI48N1lOxnhmXTLFdS1M6eONjVrJrAG+bEstl6iR5Y1YqxSEuNuhVio6sVwEQWDBxHAAkoulB+fu0cHMskw9BUHg5uGBfHbbkC5rA272Vlw/yJ99GZXyqEEURR5YmUDvl7bLU+CRoW7ytHxsB2phX4s/8pXNaTzy80mmfrifsoYW0kqldkT7SfdoQUw4oghjF+1h4nv7WH4wj7tXHGdrivSwrV0wml1PTOShSRHcPjIIR2sVS+NyOZpbIy9w3b8yni/2ZbO3wyxj08nOo6CO0uiMXP/ZIWYuOUiVhdhZ3tBKWmkjM6J9GBnqTnZlM9XNuk5T/X9NCqefvzMvXNOHGo2ebalSG81mkQdWxjPy7d1UNOr4KDaz0/UO51SzLC5X7gyqm3Us3p5OniXDsm09ZfGODERR5O4Vx7nq4wNodBJOufWsrMvsymaO5dYQXyAZvN6+kmEL87DHSqkgvayJdQnFzFxykKkfxnHbsmOkljSQXdlM2PNbaWgxMDzEDR9nGwYFuBBfUMeRXGk0fs/YUMxmkbkjAuUqXFdFS8/LrZY4/pOF9cyI9uGBieHEPTWJD28eSJCbnYRe6CPN+saEe+DjZMNLG1MxmUVuGxmEl6O1nLFqMotklDfKfusoH0duGOQvu5jSy5tYHV/ET8cKeWFjqszaAeldGxnqhrXFQE6zYB58LL7m20YEA3DXN8epbGw/rqhWy3+SS7lpSAA3DQmgpF4y/kMs6Icv7xjK7KEBLJweyYsz+/LEtEgZcjciVHLxDLUkvN08LJAJkR7EZVazJamMMA8p6SvEw77Tu/T69f24d1wo88aESB1DlFe3iJF+/s5UNemosLR34ZokVAoFK+YNx9/FlliLId+eWsaS3dJM91cLMuJIbg39A6Rz51RpuP7zQ4DkIhJF6Offef3otddeY9myZZSUSAO3yZMnU1RUxPHjxzvtV1RUxNGjR5kyZUqX9p6ty2HLAHS5gigNdR664JWvoM61QAhwy/Ag+vo6E+0n3UwrlYKV947g411ZnCqq58t9OeiMZjwdrXnu6t48e1Vv2RgvmBhOhJcjYyLccbJR44yaky9PY+n+XD7cJRmLKZYX577xYWw6VcqDPyZgZ6Wkl7dDtwkcII3qpvX1ZsRbu5k9NIDXru930Z/1H4P9+Toul/WJxdw+MpifjhfKDI42BbrZ0dBiIKOiqVN6fseFthXzhvHAygQ+2pWJnZUKK5WCME/Jt+rvYsv7cwZyIKuao7k1TI/25ttD+ZwslIyqf4fIIEcbNbeNDGJpXC4gYXy/3JfDoewaDmXXYKtWYq1S8K+YCD6KzaSkvqXTYvKGk8Us2Z2Nu72VzD55fPUpvr9nBLvTK+R7rDeaeXc7bEkq5UhONX7ONhx+rv3xmxDpSYSXA0+vTcZgEsmubJa5ICAZvwmL96JSCHg5WXM0VzLCepOZwYEuPLU2mZL6FtYmFPP0Vb357nAe9VoDKw7moVYq5FnDhMV7qdHomdrHiy/vGIpaqeCnY4WdXFGBbrY4WRa+VUoFvbwdWBqXi5VSga1ayW0jg/jmYB4P/piAr1P7vRgTIXXEw0Jc+WJfDm//dgYnGxVPXxXFvyaF425vxWNTIyms1coMG3cHazwcrKhu1suDBmc7NTcOCeC6gX6YReQ1IqVC4IWZfXjk55NE+zkR6e1ImKc9udXNxJ6uoE6rp9VglgcBIHX0RXVaJkZ6kl+j5ZVr+/LGltOdisW0yUatZHS4O8nFDXLa/eoHRnEgq5ox4e4MDXYloaCO6R/HcXU/XxSC5N6wVSu5f0KYTBa1Uirk99XBWsX7cwbK1/j3lHZ64rgID94FxkS0P+MTI73YkVZBSX0Lz1zVu1Pi0TX9fdiaUk6Iux0vzerbpf1nqy2oYP63J3gwJpzsymZeubYv/fydmdLHi9Univj3zyfZnFTKwABngtzt2ZJcyg2fH+JUUT1PTo/k9lHBfLk/h1qNnihvRzIqpFl9x+I2ABEREdxyyy0sWbKE/v37ExkZyYIFC7j99ttZuXIlw4cPJz09nfnz5zN16lSmTp16wfb/v2bLVDfreGBlAgkFdcwdEcg7HVw855PeaGbl0QJEUeS+8WHy9g0ni3l8teQfvHlYgMyAP5eqmnQyNOpS1PbwtGlipCf7M6tws7diXIQHj0+LZEtSKWmljXx159BOxyYU1GJvraK3jxMvbUxl5VFpsT3SEolwLnUsHdhWmKNNlY2tjHh7NwCr7h2JQgBrtZIjOdV8uCuTD24eSH9/Z6Z+GMfgIBcUgoCPsw0e9lZ8f6QAFzs1DS0GXp7VFzsrJc+sSyHIzY6iOi2RXo5sf2w8giDwjy8OyR3MgonhPHt1705trGnW8eCqRI5b3AVzhgZwy/BAqpt1LFiVyEjLC3Usr5ZIbwfKGlppajXKx78/ZyCLtqVT3azDx8mGu8eE8OW+bBpbjYyL8CDaz4nfUsro4+vErtMVDAx0YXiwKysO5TEh0pO5I4LIrmxmVJi7DEsDyZ++IbGEfv7O/CsmHC8nG47l1vDK5jTSy5u4e3QwT0yPksN392ZUMv9baR3pqzuGcFW/7n2vbUovbyS9rKnTwt/5dDCrml7eDng72fD21jMsP5Ar8+ztrZTsfGJipw74bJXWtzD/2xPUavV8O284zrZqufxiaX0L9VoDff2cuj12+YFc3rR0WgaTiJeTNR/ePIihwa7ojCYGvLqTPr5ObHxo7EV9ltyqZkI97GUjXqfRM/+7ExTVatn26Hi5MAtILsIWg0nueC+kFr2JG788TF51sxxFc+DpSQS62VFUq+Xx1aeIL6gjytuR9f8agwh8EpvJ8bxaRoW78/SM3igVArlVzRTVtRDt58SsJQd5cVYfZg3wIyQkhOXLl8uGuqioiF69ejFq1Cj27duH2Wzmvffek0f0Hh4ezJ07l9dff12uudrDljmPRFGkvLEVd3vrTj6333uued+eoKKxlW8sU7c/Qg1aA+sSi2k1mghwteOafj5UNeuwUipwP0+Y59kymMzsTKtgbUIRk3p7dQn76qhjuTXc8rW0eNYd1OtUUT3fH87nnRv7d+qsGloMstH6Oi6HH48V4uNkQ05VM9XNev4x2J9FN/WnTmPAx9kGURRZn1jCxlMl6AxmPrh5oGw4DmZVs2j7GW4Y5M+940K7TQfXG83sSa/EyVbF6DB3eR+t3oidlQpRFIk9U0l/f2f2pFeyaNsZpvb1pq+vE/eND6OgRsPB7GpuGhIgpdZrDaSXNzIsxK1Th7Y+sZhP92STV61haLArK+8dgZ3VJUUWYzaLnCyqo6+vs8x1B8k98mt8Ef39neUCIX+UmnVGbll6BJNZGqiMDne/qOe2zW5cakq+KErArVAPe8yiFKve0W25/EAuAa62F+zQ/ptqajXw0a4smnWGLgO2mmYdtlbKS/7ur5R62DL/RZnNIoJw6Q/9X10anZHoiyA2XqyMJjN6k/lPeyk6tuNc7rOLUWOrAUdr1d/6+zaazAiC0FMg5G+oK1Yg+xLkjxQC2aZioFNQ6F+lQPaV1v9qrUx7a5VUeSj03PHXlyKVUnFZRvVK6XLbcLFT/L+y/grfQ4+uvC5p5H4uiNhZ+8QggcNakQz8eiCPs8BhZx1ThQQZuxT1gMN+n3rAYVdOPeCwP0Y94LCLV/C58AOXCs7pFiJ21j4xwEFgR4dtzwHPXWGITw847Pe1L4QecNiVaF8POOzKtfF/FRxWgWTs7du+cy4RDGb5eypSJ5EHPHWx7b0sn3sbREwUxV0dtsVYGtQHKVSyBGlB9TbxLARBm64EOKxH/1sqqWuhViuFj13uQnePevRnKCXl8sFg5eXlODk5YWtri06nIysrC39/f9zcJPfo+cBhlzuyKgScztoeA9Qg9fgayz4vdHP8/Ug9XXxQUJDYox511HWfHRSDn9ki7kgt+7Ob0qP/59IbTWJmeeMlHxccHCy+8847oqurq1hXVyeKoiguW7ZMnDhxopiZmSkqFArx2LFjnY4pLCwUraysxN27d3d7zkceeUR8+OGH5d+BePEcNvp3DYnOhoid9edEJD9QGDAH0IlSweyzO5WvRVEcJoriME/P7juev6NSSxpILq6/8I5/sE7k17LpVDum4GyWzl9ddpZwyjNlTZ22txpMXRAFPerRH6lXN6cx7aM4OVP1UjRs2DBiYmJ4//33O22/GDDY2RJFkQMHDhAdHX1R175k434OiFjHBjSKoths+XkroBYE4cIghP8Rzfr0INd9duh3QbIuVZkVTV1gTm36aFcmz1tgTyfya+n14jau+jiuS7vWJhSz/EDuJV/bYDJTp9GzP7OKo7k1FNVqWbQtHcM52nOpqtFICII2JgtIMdkx7+1jwuK9XdL//wwV12lJKvrzO/IroaZWA7O/PExCQd2f3ZS/nNogY224kI4Sz3Jri6LI46tP8e72dHnb66+/fkXAYK+++ipms5n58+dfVLsvybifByLWcR8fy34IgjDCco2aS7nOX0EGk5mHfkzki33ZFz3q7WjY4rIuHVR1Kfr5eCHTP4rjsdWnurTPbJYIdRq9ibTSRmJPV2Ayi6SXN5Fd2U4AjM+v5ck1Sbz5Wzvp8mL1xpbTDH5jF3evOM6tXx9l/OK9fLU/h8TzGIeyhhbmfHWYXi9sZfQ7u3nk55PdgqREUaSoVtqeWtpO2vvxaAHlja20GsxsSf5DWHSkljTwzrYz8j0VRZEGbdfghlqNnluWHuX6zw/xzNrkLi/5303bUsqJL6jjvR3pF975f1Ams8hX+3M6vR8A9Vq9nL2bctaM3GwWuXnpERb+2h6o85/kMjacLOHLfe2QvH79+l02GOyzzz7jhx9+4LfffsPa+uISFS915N4tREwQhAWCICyw7DMbSBUEIQlYgrTa/Zd88jU6I6klDZ1ezDaQVEJBHb+llLF4ewa/nCjqcqxWb6SoVttpW1ZF+4OxzkKIBKla0y1LjzDr0wOklnTu/UVR4qBc7C0SRZHlB3J5fkMK/i62bEku46m1ybz+n9McsHQoudUammQscQ1Hc2vwcJC4Mh1Hmss6jNgPnIVjbdAaeGPL6S4upqJaLbO/PMwPR9ojV2Oi2t1q8ecw7mazyBOrk0grbeSu0SGMDnMn9nQF//whnqyKJlYczENvNKMzmnj455O0GExEejtQXNfCu9szSClu4GhuDeGe9oR52vPjsYuPnNXojCw/kEurwcTJwjrWJxaTXFzfpVPU6o28s+0MS/fnciC7moYWAzd+eZghb+7iVFE9pfUtskvopY2plNS3MCbcndXxRZ2oon9H7TojRfO1GC5u5pVS3MCrm9Ou+Aw1taSB0vquHf75VNnUyqJt6aw+IY2wY09XEPPeXhlAdzH6Nb6IRdvSmfrhfq76OI7GVqlD74j8TT7r3f3lRBEn8utYl1iMwWTGYDJ36hzb7k2D1sA9/36aZcuWsXx7PC160yWBwVasWMGiRYtkV87F6pKSmMTzQ8Ta9mkrwfdfkSiK/JZShtEkcv0gPxnGPzLUDYVCKpyxOamUCb08qG8xUNHYireTDZHejry4MZUNJ0sYEerGN3cPkwsVLJk7mFNF9agUAsHudnyxL5sBAc6EethjrVKgNZi46qM4ShtaiX9xKh4O1oiiyHYLAnRkqBt70itpNZhIK21g/rcnUCoE6rQG7vs+nnG9PAh0teNgdhUqhYIjuTU8MjmC2UMD5FTmtJIG9mdW8ejUXp2IdUt2Z/NRbCZX9/Ph/TkDufXro6xLlDqSdYnFvHlDP5mX4mKnlgsWPDwpgm8P5fH0umS2ppZx24gg9mZUcceoIP6TVMa21DL6+Uu8mYYWA1XNOopqW9ibUcnCaVGklTYwpY8Xq44Wygbc0UbF2HAPvrpzqER1/PwQa+KLmNzbi4YWA318nXC0VlHdrGNpXC5HcmtYfNMAbraQDKf1LePBHxOZ9lEcIFVcGhPhIRc2eTAmnMdXJ/HV/hyWxuUgihKmNdzTgTe2nCattEEmWYLkjz+YVY1apaCXlwMiUme9LVXqpBtaDHx/OJ9Gy/0JdLNFbzTzwZxBuNqrmbnkoHyuz/dk09fPSWbZvLHlNPkWNPLUPl7EnqnkyemRPDQpgrtWHOfj2CwGB7kyJEiC2F1KxqrBZP5dlZDMZpGk4noOZlWz83QFGx8a222WaUZ5E4/+cpJRYe48e3VvbNRK9EYzezMqiYnyZENiCbss8LnTpQ20GkwX5B19sS+bbanljA53Z1KUFztPl190pbCM8ib2Z1YS4m7P5N5echLVluRSHv7pJAGutsQ9NemcCYFms8gd3xzD1c6Kd2cPYMHKBBIL61EqBGZE+3DfD1K2++oThTw8uVeX48/OSjaazHy0KxNHaxU2VkrSy5v45kAep8sa2XW6gkGBLvT2ceS35DKadUYcrFW06E0yPBCkQVNulYai2haenB7J+zsz0RnNmM0i8787TmJhPWLoaE789hNeIb0uGgz2448/8vzzz7N3717CwsK6fJbz6ffUUD0vEEwQBGukuNqhSO6YW0RRzD/fOX8vfiD2dAUvbkylvJuFDm8na/xcbLFRKTmSW4OVSoHJLCIg1V8cHuLKifw6nG3VaHRGIrwcqGzSUavRY6VS4GZnRbC7HY9O6cU935/AYBKxs1IS5mGPRm/qNH3r5++Eq50VB7KqcbRW8fntQ7hrxXGm9fXmQFYVPk42rLx3JOsSi/k4NuuSPuOgQBdUCoFarZ46jZ46rYGZA3z59NbBKCxQom2p5fTzd+buFdIoQKkQ8HSw5pf7R/Hd4XxOlzXy1g39eOLXpE58aoB1D47mP0llfHc4H38XWxpaDLjaqzGaRO4cHcx7OzJoe0Rc7dTUtxiYFOVFuKc9C6dHdTICz61Pkf2TINH9VEoBG7WSWo2eWQN8+XTu4E6Gb2tKGRnlTaiVAu/vlF6Wvr5O3DQ0gNtHBrEsLpcajZ69GZUU1Gj5+JZBxER5MvLt3UR4OTB/bCi7Tpfj4WDNnvRKmSyoUgjYW6tkZn1HrZg3jMIaLRtPlVKn1csFHACm9vFiRKib3CnOHhpALy8HGZrWy8uBWo2eq/r58Mq10VipFCQW1nHzV0cwmkUcbVRYqxQ8fVVvZg8JoKhOy5myRgpqtKiVCkI97Yn2cyKtpJHj+bUcyakhqbieu0eHcMNgf17dnIZaKRDt54xSITCulwdl9a0MCnShr59UfjGttJEv9+dwPK+20+h08U0DmDXQF4UgkFHeRLC7HWUNrbyyOY3jFqrlREvhjq/jJLJpuKc9OVWa/2PvvOOjqtL//75Tk0x6742SEAi9dxQVFFGxr67dVbG3RX+urnVVRNe2uyquWBDUVQREqvTeAikQQnrvkzIl08/vjzsZEkKvu37zeb3mlZk7N/c+c+65pzz3PO+H8b3DuGVYHDO/zeC6QTFM6RfJd7vKGJkcwr1jk3C4BEarA38vNYdrDUz7aIvnGof7a6lokkfbOo2SuGAf/jQ+mehAb1ZkV5NXa8DPS41GpaDeYGVPid7j6kiJ8OO5qanUtFp44edsz/YbhsSyr6yJyX0i8PNSMaVfFFkVzdS2WtlW2OCZaeo0Skw2JzMGxbDInUVNkkApSQT6aIgN8ibMT8uIpGDqjVZSIvz4cG0+4X5eTB8YTXKoDrPNyX1f7+HTPw7h8rQIJs3ZQEmjGT+tijA/LS9dnUagj4Zr/7GVW4bF0TvCj1eXyZisf902mJkLMpgxKJZdJY0EemtY/PAYhr6+htz372DGY6+xzRJNhL+WyooKqj77E5roFBYvX0ODwcJnH79P/uYlNNfXHBMMlpSUREVFRSdXzO23384nn3zi/q3niC1zKkAwSZJmAv2FEA9KknQLcJ0Q4uYTHfdMG/ecyha+2FJMj3Bf3lmVB8CL09JwulxsK2wkt7qV2lYrUQFeVLdYCPJR43QJWi0OtCoFPcN9+eqe4ewu1vPIwn0oJdKv1YAAACAASURBVIn3bxnIa8sO0my2M/eOoYztFUqL2c4D8/fQaJQbgnB/LbOv789vuXXkVLZgd7k4WNXKfeOSmNI3irRof2b9lMWyrCpGJYcw+4YBhPnJuVg/21TI7SMT+GZ7KS4h5728b1wyBosdg8WB2ebAbHOiVEgoJImFu8rw81IRFehNQa2RMr2Z1U+O98C0OuqrbSXM31FKfp2Rd27oz41H5XQtqDNQ0dRGbJA3f/p6L7cOj+f+8cmU681MeGc9LgEf3CJn1HG4XGhVSgrqDNS1WinVm3l+kYy1XfH4uE65KttV12rxMMgVksT2okYK6owU1hn59I9DGBwfdEI8w5xVeVS3WJg1JaUTzQ9kH/eX20p4cEIyPhoVa3NreeL7/RgsDsL8tJisDmKDvHl+ah90WhWvLjtAUb2JawZGs+5QHfeNTSa/TkYgzxh8ZGprtjmYv6OUVQdquWNUAtcMlMmK2woaqDNYmZoeiUap4Od9ldgcruOm8ivXm1mbW0t2ZStlehN7S5voEeZLft3xMzCpFBL9YgKICfL2zFYi/LUEemuoam7D6nR53IQalYwLViok9CYbvloZ06xWStS2WtGqFFgdLrzUCsL8tJTr25CkI0mf35yRjkKCWT9lo1UpsDldCAFqpUSwTsOKx8cT6K3mvTWH+WRjIQ6XwFutpM3uRKdRolYpaDbbPcdUSPD05SlsL2xEq1LQI9yXhTvLmJoeSXZlq+dBuFalIDXSD4tddrn5e6uZmBLObSPi2VPSxBu/HvRw4cf1CuWftw3mvq/2sLNYj69WhdHq6PQ72hUb5M1bM/ozf0cpE1LCuHFILKPeWke9wcpfr05jWGIwf5i7gza7E7tTeMrbcRw3UpCPmp3/bzIalYIf91awNLOK167p2ynF4OPf7WOJO2PU0IQg7hmbxNR+kby2LJcvtspuuXl3DWNSangnQuydoxJ4eXpfsitbCPHVcu+Xuz0JfcL9tNw7NokH3Ljm09W5bNxPCgSTJGmVe5/tkiSpkCMzw07kdz8X4LCieiM6rapTIlqbw0V+nYGe4b7UG6z4aFRY7E5a2uzEBHl34oI0GK2oFQoCfNTUtlqwOVydGtB281vbHPh5qbo0UkKI8w6PcroEBov9hIl57U4Xe0ubGJEUfFr2HKxqxc9LdcxOA+TyGfbGb8QEerP5z5NO+dhCCGxO1zGTIZyt6g1WVuZUc93gWLzVShQdgG1WhxOz1dmJYX+hZLY5eH5RNtXNFi7vG0FskJw0w+kS5Fa3kldjoG+MP4Pigjw0yF8yq9hdoufJyb09Nrda7ORWteKjUfHNjhIUkoTdKRiRFMylfcIJ8dVid7oobTRR3WIht7qVMr2Z7IoWJqSE43C66BPlT0qknydH6uoDNewo0uPrpeLOUQnotCocLoGv9oiHtqq5jXK9mf6xgWzKr2drQQNNZjupkX5YHS7igrwZEBfoOWa72u8Bl0vwm9uHP6pHyAldNTaHi42H62kwWpkxOAatSond6WLT4XpG9wjFKQTNZhurD9TSLyaAfjH+NBjk2XVkQOcBQGVzG0o3ThrkDtfmdFFvsBIT6E1UgBdLM6vw81IT6qvB31tNXo2B3SV6RiSFMKVf5LFM7PT7alutlDSaGBgX6Jm1CiHYnC8ncW93Ewoh2FbYSHSgN0mhnXPQtpjtrM+rIy7Ym8HxQWfVbpzLxv0GYIoQ4j735z9yFDNGkqQc9z4V7s+F7n0ajjpWR3DYkNLS00XLdOtC6/lFWfSO8OPuMUkX25RudatbXBwq5EklhPgM+AxkcJgkSd3gsAujswaH3XNx7OyobnDY2dvZrm5w2JnrvwIcdtxvjhe6eqwXMIqTAMGAVcAo93sVcsMrnc55TtGWbnDYmdmXSDc47FzY1w0OO3c2/l7BYVcBZrftE9uvOacJDzvT1+m6ZVTID1SPCwSTJOlhIF0ceaA6Qwhx04mO2w0OOzXVtlqoM1hJjfQ7o6Vz3epWty6szgU87EQ6p+Aw4ErkBr4Q2IvcK9UB09tHBMjTFBvQAgw82TGHDBkizofMVoew2p3n7HgWu0M8vyhLzN1UKBxO1yn/3yMLMsQT3+076/Pf/9VukTBrmUiYtUzc/vmOLt+7XC6xLLNKmK2Osz5Xt/475XC6RJvt1K7vqpxqsfIY4LVyvem81hGr3XnC+y6zvEnMXpkrXK5Tv4f+V3W28DCr1SoGDBggPvzwQyGEEA6HQ4wePVq88sorQghxbsFhQojlQojeQogeyNO5KUCdEGKpe5cngb8LITTI04tbT/cc50oj/vYbt87d0WW7yyU8K08O1RzNPTu+Plybz4KdZbz+a26nCNR27SrW89W2Es9nh9PFV9tK+CWzip/3VXZKag1Q2mjCeBph/+2Z06FrRGn7+R9ekMHs/6Mh5L9nNRqtPL8om+Fv/MaYt9bx094Kms22Y+7rcLpYm1vLg/P38uiCfZ1iMvQmG2PfXs/UDzYdl0vUUXani5/3VbC3VH/SfUGug0NfX8OT3+8/7j7TP97KP9YXUnmakainKnEa3ogLobOBh2k0GubPn89LL71Ebm4ub731Fk6nkxdeeOGk5z2rub0QYhNHHha06xrgK/f7r4Brz+YcZ6qWNjutFgd7S5s8ocQgh6KPemstaS+tJP3l1Ux5fzOb8+vZnF9/wkqRVdHMJxuLuGFILD3CdPywpzOSoLTRxE2fbuevSw9gtskN9pzVh/nr0gOkRvrh56ViQYeQeZdLMOGdDdzwr22dmDROl+Dd1Xnc9Mn2TvRDs81B2VG4g/Y10O2qcnNaqpu7qYn/C2oy2dhW2OCpLx1ldTg9vJ+aFgvX/XMbP2VUMKpHCAJ4+j+ZngZ0RXY1b6885MEpzFl9mHu/2oNSIaFWSny68QjnpH3wUdJo9kQ2n0jf7y7nye8zuf5f29ldoue7XWWMm72Oj9bmY3V0hbe9uzqPVouDX7OrPbiG9ujXOoOF0W+u9ew79u31pP91FXM3FXUZ+LTrcK2BO7/YxZdbu+IdWsx2HlmQwUdr8z2/fW+pngGvrD7m8cQR78MF19nAw/r168df/vIXrr32WubMmcM333yDUnnypcXnY7VMhBCinYhTg/zkuIvORQ7VnMoWvttdRoC3mscv7d0pqUNHhsu3O8p4aKIcJLAsq4raViv+Xiqs7sbxj/+WIztfu6YvfxyVeMxzvbbsIKG+Gl6clsb3u8v42/JDrM+rIz0mgFBfLW/8muvZN6uihdggb77YWsy1A6OZc+MAHpy/1xO2vz6vjl/czIpDNQZ6vbCClU+MIzXSn6WZlXy0rgCANQdruW1EAi6XYN7WEo6ul2V6Ez3Dj6w1bodtealPv8/Oqmjmhz3lPHpJr06xAt06d2o22/h4XQF5tQYK64ye4J0HJiTz/NQ+GCx2bA4XH60r4NudpUhIPDypJz/vq0BvsrHw/pEMSQiittXC84uyWXeojn+sL2DOajmK2M9LxWV9Ivh8cxH9YwN4aVoa/95SzNaCBoQQuIQMnLskNZyCOiNrDtZy87B4Pt9chJ+XipuHdb4PXS7Bgp1lhPrK0ZE3frIdkLEN7645zJLMKpY/Ns5z38nsnmauTI9kRU4N3+4sZUVODUX1JjY8M5El+6uoarHgp1V52EcGq4M3lsv3zvx7R6BSSoT5aekR5ovLJZj5bQYFdUZyKlu4tE8E0YHeFDcYsdjleI5lWdUso5oJKWFEB3rz2ML9tFocLNxZxsC4wE6/560Vh1iyv4qtz13SCdPwl8XZqBQKXp5+aijdM1FHeFifPn2Ak8PDkpKOLDm+8847eeGFF7j++uvp1asrUuFYOq9LIYUQQpKkY3aVosNSyKFDh55Rd1rdYuGXzGpa2uzUtFh596YBnu8y3cCrIQlBvL3yEAPjAkkK1fHZpiJ6hfuy+OExbM6v58H5GZ7/WXmgxtO451S2EOKrISrAm8O1BnaXNPHClX0I8FZzy/B4/r4mn7vn7SY1Ug6fXn2wlrvHJDJvawn3fbUHo1WOgp01NRWVUsHghCB+y61Db7Lx3urDXTAAqw/UsqtYz7urD9Mnyh+9ycq2gkZuG5HA3387zEfrChgUH8ir0/uxs7iR13/NpaCuc+Ne3CCvDDtWyH1H1bRY+OO/dzI0MZiXp6eRX2tk+sdbATnh85+npJ7J5egWciCNwWInNfJIBO8Hv+WzKb+emhYLta0W0qL9GZYUTFqUP59vKebTjUUoJYl/bihErZQDla4ZGE11s4W//3aY6AAvvrx7GEMSggCI8Pfi/VsGMn72et5ZlUdSqI7eEb7MXpnHF1tK0GlVzLtrGCG+WnJrDKzIqaGk0UxFk5k6g5Ubh8Sys1jPd7vLWJlTw+u/5uKjUXJlehQqhYLCeiOHagx8vrmIQzUG3r4+nZ7hvry5/BDJYTrenNGfb3eW8tKSA3y7sxSNSsHUflHkVrdic7q4cWgcEhL/WH9kxvDikhxyqw2M6xXKN/eOIPG5XwHYMmsSn20q4uvtpdz+751IEoT5aln++Dh+3FtBQZ2RsT1D2VLQwLjZ6wn0UdPspnQOiA3Az0uFweIgo7SJZ/+TRaPJSrBOw9pDdZ0YMmabg083yaC8fWVNDE2UMxmtPlDD/B0yMuOxS3sR7A4gc7nk4LsP1uZzVXoU/WKOMIzOVK+88gqDBw/m6aefBuCSSy5h5syZ7Nq1q5Nrph0e9uKLL3q2zZw5k2nTprFq1Sq2bNnC2LFjT3q+89G410qSFCWEqJYkKQr5Yet50eQ+4WT+9XJeXnqA+TtKeWlaGmqVRJvNydL9VSSF6vj2vhGMfHMtX28vobjBRE2LhX/ePgSdVuZVtOuu0Yks2FmGxe7EbHNy06fb6RHmy5KHx/DJhkI0SgXXD5HD1v291Lx1fTqPf7efQzUGZn6bQWqkH3++IpV5W0s8fvT7xiURFeANwNAEuTINfq0zhP+Jyb2Yt7WEr7eX0mS2MSA2gDeuS2fu5iLWH6rjmx2lfLSugJuGxvL29f2RJImkMB2v/5rLipxqFmVUcLjWwMSUcA/BsZ2vAvJUVG+yeaIczTYndQYr+XVG8uuMpEb68dW2EiL9vQj31/LPDYVUNbcxIC6Qu0YnIkkSNS0WjG7+TrnejNkm0xVvGBLbCcDU8Zwni7r7z55yjFYHd49JotViZ29pExN7h2FzulBI0mmtBiqoM5Bfa2Rq+rGnuGcri91JaaOZlEi/Lt9lV7QQ6KPGYHFgsNh57Lt9mKxO1j09gXB/LyqazHyw9jAuAaN7hPD+LQMZ5m5YAOKCfZj5bQb/dCNi7U5BoI+at6/vj0apoLK5jQh/ry6pBv291Lw0LY2nfsjkqct6MyI5mG2FjTQYrcy5cQAh7tH22J4yOvYvi7PJrzUS6KNmUmo4AT5qvtxWwqMLM4jw11LbamXu5mI2Ha5nf3kzkiRzX965oT83DIlFkiR+fGi05/zTB0Tz0pIDvPKLTB6ZsyqPUF8t3molwxKDiQvyZn1eHSOSgmky29mc30Cor4Y/XyEPHH56aBR1rVZig3x49Zp+xAf7MHtlHmN7hbI5v54p72+iwWhjeGIw7908gOFvrEWlkFApjpRDZkULz09N5fMtxcxelYfZ5uTDWwfhq1Vyz5d7eHD+Xny1KmpbraiUR+rj+7/l461REuGv5btd5SgkcAlYlFHBfeOSqWgyc8+Xuznsprz+a0Mhm56dRGSAF5Ikz3IfW7ifu0Ynct+4JJwuwdfbS7ksLcIT4d1mc/LqsoOdcAc9e/bk5ptv5sMPPyQ9PZ2kHj258577TwoP++abb9i7dy+ZmZksXbqUO++8k8zMTHx9fU9Yb88qhyqAJEmJwDIhRD/353eQgWH7gW+QO5C3xVGAsY46W/zAvrImrvvnNkb3CGF3iR67U6BUSHx+x1AmpYbz4uIcvtkh+7vn3jGUy9KOeIoO1xow22QkwZ1f7CLCX0t6TKAnfPrytAhWH6xl5sQeXUa0epON4W/8hk6r4pdHxhIf4sOqAzW0mO0MSQwiMUTnmf5ZHU4eWbCPnUWNGKwOj4ul5K2r+NvyXD7bVIROo2TjnycR6qtlS34Dd3yxE5eAkcnBfH3PiE43+CMLMliWVU2gj5oh8UGsy6vzHDPIR82+ly5nc349Ly89QGG9iaRQHcUNJg+n45LUcCqb2sirNSBJ8O19I2g02nh04T4CvNW0tNkZ2zOUquY2itwzgv6xAZ0SFtw7Nol9ZU0MSwzm+SvlqWaz2cYf/72LYYnBvHR1GiA39p9uKiIxxIcp/aLIqWzxgKfazwXw95sH8O7qw9S2WrhtRALPXpGCTnvy8ceQ19bQaLIx7+5hTEoJZ0+Jnm92lNIr3BezzcmNQ+O6hICfioQQNJntPPn9fjbl1/Py1X1xugTzd5RidbioN1qxOVyd3AwgM0xSo/xwuuTlq0argw3PTCQ60LvLOVwuwS9ZVZ5w9ld+OcDg+CDuG3dqBMC6VouHw1Pd0oZSIRHu19mt9vC3GfyaXU1iiA8f3TqY9NgAhBC8sDiHH/dU8NNDo5mzOo+Nh+tRKyWGJATRbLbz40OjO2EJjlb76HtqP9kNo1UpmHf3MEb3CPX8NoVCHhxkV7YwNCHohDiI9kHB3E1FvLE8l1uHx/O36/p5Bhihvhra7E5qWixc84+t+GpVbJ41ifu+2sPm/AaSQnX89tQElAqJN5fnMm9bCeF+Wvy91BysbuWRST0p05tZmlnl4cxckhrO+7cM5E9f7yGzvIXZN/TnvTWHaTBYMbgJkAoJNCoZb6FVK3C58DwMnjmxB04h+HSjPCuICfRm4f0jWbK/knfXHKbh8/uYO3cuB6VEihtMTElUce9VYxg2YgS+M14jt7qFlNr1FG1ZSmVlZRd4WFlZGYMGDWLp0qWMGTMGgJtvvhl/f3/mzp177vADXf5ZkhYiL84PRV7++FdgMfADMA55HfwMYDVHAcY66mwbd5dLMObtdVS3WEgO1TFjcAwTU8I9U6nSRhOzV+Uxtmcotx4H/CSEYOGucr7YWkxhvZF73SPKH/ZUMDEljE9uH3JMDOrKnBpig7xPedpmczcKu4obUSkUXD0gmtpWC4syKpncJ5xeHXgdmw7Xk1dj4M7RiV1Gbk6XYHl2NaN6hBDqq2VfWROb8xsoaTSxKKOS+8clMXdzMUmhOiqb27A5XNw1OpHbRyawPLuaK9MjKaw38elGGWQ2Y3AsQghqWi1E+Hkxe1Uea3NriQv2YXSPEKwOF8uzq0mPCSA+xIf1h+rYXdKZ3T4gLhBDm93TGfxhRDwxgd6UNZr53v0AenhSMHtLm/D3UjF9QDRFDSY25zd0mm4PSwxiT2kT0QHezJqayqC4QML8tGhVCsr0ZorqTZhtTlYdqEGnVbJwl3xsjVJBVKBXJ8qj3NhpeXhST3qG+/Ll1hIApqZHotOoSArTkVXRzJb8Rkb1CGFyn3B8tSq2Fjby8tIDHldXR6VG+pES6Ud+rRGjVX7QnRblzyOX9EQCnELw3E/Z9AjTER+i467RiR6XysWQ3mTj881F3DU6sROQTQhBS5vMKmo0Wpn1UzZ/GBHHJakRpzT7+m5XGVmVLbx+TT9WH6xlWGKQZ8ZwNnK5BDuKGxmaEHzc5OiNRis6rQovtZJVB2pYsLOMl6f37dSJd/wN7aheu9NFdmUL8cE+VDa10S9Gpm/WG6zc/Ol2ihpMeKkVzL93BF5qJTGB3uyvaOZvv+YS7q+l0WjD7nTx1vUytKwdJBbgrSYlwo9dJXo0ShnMdrTaQWgddfvIeKYPiGF4UnCX/U9F561xP8EJTwoY66hzAQ4rrDdSXG9idM8QfDRn7m1yOF2YbE4CvGXYUWVzG9EBXucdCnau9J895Tz7YxYA1w+O5Y3r+lHR1MbH6/J5cVraObn5QF4it3hfJS4hmL+jjOhALxqNNqwOF49e0pMf9pSzs0iPwepAqZD448gEvNRKfs2uYnKfCB6c0MPz4FZvssnuhFV59I7w45krUthdomfWT1kU1R9pXBUSCI4QAoN1Gix2JwpJ4ueZo/liazF6k42aVit/u64fsYE+VDSbuf3znTS5Ow6NSoFWqeg00gbw0Sgx2zqv/kgK1XHbiHi8NfJNXlBnZFJqOPHBPqiVCvfqC/n5To9w304gOpvDhVop/c/Um27JfvkNefUMSQg6pUUFQsj45ZJGEyOT5UFWVkUzi/dVERvkzcjkEN5eeYgxPUNIjfRnWGIwX28vITLAiwNVrfSN9vdQSM9UF6NxPxXAWDc47DyorNHMkz/sJ9Lfizk3DvBQBy+WTFYHNofrjOiMNoeLrIpmDtcaaTLbaLM58dYoGRQfiFaloH9sIApJwupwnrBDd7oEVc1tFNYb6RHmS5ifloomM01mO6WNZnqF+9I32p/VB2upabFgsDiIDNByzcCYkyat6Fa3LqZ+r+AwgHSgHtkl1AeZg3GxF3m3zyNd7ve9kSFHEcgQoRpkIJIKmT1y3vTP24+5+WggVyzg6GCXHzLnIgAId7/XAfFA7tEHO4862k41R4BL7Q7pIsDL/TmXI0C27AtkYyIyFK5j0EPH8uyBDJKq4OKW57HsbC/PUOR66svFK08V8qTMicxa6Y1cfiHIYMAmtx165Ps9DJntUgYEuV+nn+X93Nlp5khZeiPf+5Wc2jVPRy5n4f6/FuTf5UK+bjbk9qNdGvf/7HV/PnNwGPAF8oqXjhCnYGCN2+g1QJA4AsH5ELkyG4DB7u1dAGPn4oWMQrAgoxBeONfHP0ObkpHBS5nIDdML7u37gLXuMvsNCL4Iti0Eqt0VsQK4F/kG6mjXvg7X8h/uss0Ghl5kO79x25EFNNMZJPaC2848YOoFsnGs+4bMQl48sN9dHzuWZ2v7db5Y5XkCO9vL0wwsvZjlCfR33x9ZyATNl9zbk4FdyIRFPW6YFnIH9B/39l1A8gUqy+PZuc5dlm3AfMD3VK85UAJMdr9vp2C+4f78JfD6Ufsnuq+n6mT2ntQtI0nSeMAIfC2OrIiZDeiFEG9JkvQccuM+S5KkK4FHgauBUuRedjjHAIx1VDc4rFvdOrkcLoGhzX5BE5A0mWxUNLcRHyyn7FMpJHqGn3gJXrdOXdnZ2SQkJODvL8dFVFRU0NbWRq9evTwAsZiYI355q9VKTk4OgwcPRpKksweH0RW/mscRzGUUkOd+/ynyqhiQRwc25J7phKPq8wUO61a3fk+68oNNImHWMpFZ3nTBzvn6sgMiYdYy8djCDJEwa5no8fyvYndxo7j8vY2ipqXtgtnxe1VCQoJYs2aNEEKI8vJy0a9fP/HYY48JIYS48847xQsvvNBp/+LiYgEIu90uhBDnFhzm1vEQAzG4/XpCiOXIvOMbhBBvHH0ASZL+JEnSHkmS9nTkLXSrW93qqkM1rRyokiF3x4LGHUt5NQbyagydtr298hDvrs475fO2Iy3al/w5XIIbPtlOXq2BjYfP/r5dnl3NTZ9sP2Uw2e9R1157LX5+fsTFxREeHs4rr7zi+W7OnDkEBgZ6Xv379z/l4541FNzde5z2khshxGdCiKFCiKFhYceeVfxeZHU4u0C+utWt09HPGZWoFBKR/l5sOYXGXQjBg/P3cv/XezxQLavDyVfbSvhyW0knWN2JdCJqasEJkn+fiiqazDy8IINdJXoe+CajE+Dv/5IWL16MwWBgw4YNHDp0yAMMA3jmmWdobm72vLKysk75uGfauNe60QIchRioBOI67Bfr3vZ/UkIIalstTP9oK/d+tfusj2eyOv5Pj3B+T2pps6M3dUX2ZpY3M+X9TczbWozLJWgy2XC5BEszq5jQO4xrBkazp1RPk/t/2/86XaLTACKnspXiBhNlejO7S+Q6s7u4CbPNicHi4KO1+VjsXamOR9tYqjdz/7gkbh0ez12jE3nm8t78YUQ84X7aTnC+jvp5XwUb8k5OHfnPHnmx2Owb+tNgtLKzqGvdtjqcp4XFPhO9uDiH5xd1XRBksTu584tdnvI735owYQJ33XUXzzzzzDk53pkuhVwK3Am85f67pMP2RyRJ+g4YAbR0cN9ccLWPBPxPkH39VNVstmF3CrRqBR+tzefhST0J9Dnxg60vtpbw2jI5KDev1kBRvZHksDN7GCWE4JEFGazPq2fG4BjuGp1I/9jALvssy6pmcp+Ii76+vVudJYTgs01FOFwy6+c/e8rx1ih5ZXo/xvYK9eQXuP3fO7E6XLzyy0HmbS2hTG8mOsCL6hYLz01NpUeYL59uKmLRvkoSQ3y496s9PHtFCitz5Gjdr+4ZzsfrCvjH+gLUSpnR8/O+SkYkh7DqQI0nevLDdQW4BDxzRcpxbf7br7lIwPQBMaTHdo7AFgJ+zaqSV2V0CNSqbG7jzz9mERngxaZnJx03iKvBaGX+jlLG9gxl+oBo/t+ibDLKmjqhQVwuwW1zd9JgtLLyifFdYg5sDhff7ylnSt9Iwvzk4LyWNjtL91cyY3BsF3RFg9FKm83p4b+APHv4dmcpkiTx9OW9PQRMgA15dWw8XI8Avr6nM3P9fOmJJ54gMTGRzMyzTwl70sa9I2JAkqQKZMTAW8APkiTdi7wqpj2N3nLkB6kFyEus7j5rC08gq8PJkn1V3Dg0tkslarM5ufKDzVQ1t/HuTQO4blCs57sGo5V/bSjkrtGJnS708SSE4K55u9lf3kyU+0bz1aq5vG8ETpcgMVTHj3vKmZoehVIhEeqrxWxz8PlmeentrcPj+WFPOd/vKef5qX08x91ToifQR4OPRkmwTkOrxU6Tyc7flucS4a/lL9PS8PdSU+dGvK7Pqyc5VMeijEpyqw2seHxcJzs35NXz6MJ9PDA+2cN66aiWNjtmm8MDM+som8PFf/aWMykl/JgMlFNVbauFn/dV0ivcl34xAazNrcNkdXDriPhOnJJ27gjAgaoW5u8o44Wr+iABXmplJyTryXS4i6S4WwAAIABJREFU1sBPGRX4e6m5eVgcvloVS/ZX4q1RcXX/KLIrW+gT5X9RUxOuOlDDmyvkJCreaiWSBLWtVh6cv5cIfy11BiuR/l4IASsfH8e8rSUs3l/pYRsBXJYWgbdaSWqkn2fQAPDOqiM+9Mv/vonSRjOT+0Rw24h4fsqo4LfcWqqa2/h+TznTB0ZzVXoUjyzIYMGuMh65pGenRjO7ooWdxY3EBvnw/Z5yZk7s0aVhBxgcH8jCXWVkVbSQFn2kbP+5vgC7U1Cub2NvaRONJhsZZU3MuiIVhUJCCDmq85n/ZGKwOHjhqj54qZX0jQlgb2kT5XozvloVQToN/9pY6MFkv7Mqj9RIP0J9tTQYrSSE6MitbuWvSw8wZ1UeG56ZyOdbivh+dzkNRhsVTW08f2UfthU0EOqnJbO8mWd/zMJLrWDF4+M9mIJ/rC+UF5i7BIsyKvjT+B4IIVh9sNZDjN10uJ6COgM9w/1wugRrDtZSpjdx89B4AnzkgWNWRTPLsqp5eFJPArzV2J0uPtlQyI1D44gMOH60a/u52xUWFsYdd9zBq6++ip9fV1Dd6ei8RKgCSJI0BfgAUAKfi/MADvtuVxnPLcpmxuAY5twwwNNYtJjtvLkil+92yzEbsUHebHhmIgt3lbE0s4pyfRs1rRYSQ3yYNSUVvdnGziI9vcJ9uWN0Ihqlgru/3MXwxGCeujyFXcV6bvp0e6dzB/qosTtkVEFskDcVTW1IEvhqVLx/y0Bm/ZRNg9HKV/cMZ0LvMO7/eg8ZpU38+NBoEoJ9KG40cem7Gz3Hiw3y9sCIgnw0tLTZuWloLBNTwpn1UxZtNiezpqRy95hE/v5bPh+uzeft69MZEBdIiE5LoI+al5ce4NudZVyWFsHcO+SgNadLsO5QHSkRftz+7520tNn56aHRzN9RisXu5L5xSRyqMbBkfxVrDtbiq1XxyCU9mdI3kkT3DbBkfyVbCxp4cVoaxQ0m/LzUNJltRAd443C5iA3yodlsI6/GwAPz93oYMR0V5qflmgHRWB0uMsqaqG218sD4ZA5UtbB4f1WnfSP8tXiplbx300APk8VodVDZ1EbvCF8kSSKvxsCsn7K4NDWc+TtLqW21AnKjE+QjI19BJhvm1Rq4eWgcb1zXj4W7yzlU3Uq/mABSIv0YFBeIJEldcAFCyA1UVmUzW/IbqDNYefzSXsQF+1CmN7Mlv56MsmZuHBJL70g/MsubaTbbaTbbWJdXx6C4IC7pE05UgBcLdpYxf0cpPcJ8+fGh0fh7qZAkiZU51Xy+udjTgMUFezPnhgGMSA4B5Jve4nCS9tIqJveJ4PM75Wta0WTmp72VbCmo56GJPahqtmB3uvj3lmIqmtp4/NJePHlZbwCWZlbx2MJ9gMze+e2pCcSH+LCjqJFbPpOzlA1LDGJ0j1CSw3Q89UMmTndjkxblz+KHxxyT71JvsDLsjd8A0GmUPDG5NwkhPjw4fy/TB0Sz5mAtIb5aT4KZ16/th7+3mhd+zsZkdRDmp+XNGelckiqP1F9fdpB520pQSBAV4M3wpGB+3FvBVelR+GpVHjZRu9rvNZPNgUtAcpiOonoTE3qHUaY3U9nUxuV9I1iWVe0ZKCSG+FBYbyIhxAc/LxU6jYqdxXruH5fEwepWdhc38cCEZH7Nqvbwkab0jWRbYQNJYb7oNEoyypqw2GX3V0KID09M7oWPRsUD38gxRXeMSuChiT1YuLOMD9cVcOOQWN65cQAWu5N1h+qICvCivKnNvaJFzu52w9BYZk48eb7UY+li4AeUyHlWL0MOQtnNeQCHCSE8Dd3945JIDNXx/e5ysitbEALuG5vEiOQQ7v96Dz3DfSlwI26jArwY3SOUL7YWe/C47aOncD8t4X5eZFe2IElw56hEfsqoQKtSsPbpifxnTzn+3mr+7Oa3tPO3H57Ug93FTexy++eCdRr+ddtgz426NreWe7+Sf6NOo8Tk5pjcMyaJ1QdrqGhqY3hSMGN7hnLL8Dg+31zMZ5uKkCToHxPAezcPpIfbpVNQZ2Dye5s6lUWIm7NisjmJCfTmnRv6s6NYT36tzPNWKyWUCgkJibbj+Fqv6h9Fs9nG1oJGNEoFk1LDyKls9XQ67SS9dkkSaFUK0mMC2F3ShCTJPJZ/3jaYzPJmjFYnY3qGYLY5eWvFIfaXN+N0pziMCZQ7M1+tija7k6vSoyjVm5nYO4yD1a2sza3F31tNekwARfUmjw29I3yJD/ZhR5Eem9OFzeFCq1Lw00Oj2VfezIuLcwD485QUFu+rpKTR7PFFt6NdO1Ic+0T5U93SRkubHZ1GRZiflgm9w9icX0+hm2vjrVaiUkoYLJ19v1qVwpPwpaMi/LW0tjk6lfOMwTE8Obl3l5mi0yXYWtDAiORgtKpju9JkZLPypCiEdlx1cId18Earg2s+3kJhvYl3bujPjUOPPBJ7+odMfsqoIDVS7gCFu5GcPiCag1Wt/G1Geic3xdFK+csKrA4XYX5a6g1y5+qtVrLmqfGsPlDLq8sOMrZnKDWtFs/D134x/ozvFca9Y5M6cY6azTbmrJaxvatyajDZnFw7MJp3bxqIBCzJrCQ+WIcQgsrmNh7/Ts5C9eODo3hnVR47i/XcNzaJF67qQ6PJxhPf7SejrInrBsXg7+ZEPTA+mdxqA6/8csBz7cb0DOW5qamYrA5u//dOcipbSYvy59bhcUzoHU64v5Y1B2t56of9KBUS1w2KYVSPUML9tLy0JMeDBe4T5U+PMB3Lso54odvr24C4QKqa2zxl1FGRbjb/SHc7cbr6XYPDhBA8unCfp1B7R/hyVXo0E1LCGBgXiBCC73aXs3R/FclhOv56dV/PSMThdLE5vwGVUmJsz1AyK1p4d3Ueda1Wbh0ex+L9Vewvb2Z87zBend7XM5IF2JxfT36tkfG9Q/HzUntAQ3k1Bjbk1XFpn/BOiTScLsEHa/Px1SqpaGpDpVAwtlcIl6RGYLY5yK02dCIHOpwu3ltzmDK9mdk39O/EThFC8NKSAySE+BDiq8FocbDuUB2SJBEX5M1X24+QHFQKiQm9w9hVrOeDWwfio1Hx5opD3DgkFpVC4vs95bxwZR+CdBqS3b+vtNHM+78dJrOihd4RvgxLDKZHuC/bChroFeGH0eJApZSobGqjtNFMeZOZYYnB6E02/jKtTxfkbEc1m23kVLYypmcIlc1thOi0KBR0adgK6gy8ufwQdQYryWE6eob54q1Rsja3jlqDhfhgH16/th9Gq4MQnZYwPy0Op4tPNxWRHhPA+N5hngeGKoXEL1lVHK410j8mgCn9ZCLmd7vKWLy/ksvSIgj11WKwOCisN7KzWE9yqI7bRiYwKC6Q3hF+6E02thc1oDfZiQn0JjHUhzBfLQV1Rlbk1DAiKRgvtZLdJXqeuqw3dqdgX1kThfVG6gxWnpzc2zOzvNASQkYXBx8V/GRzuCioM5IW7U9ejYGP1xfwwPjkUyacbitsoLDexM1D41iUUUGgj5r+sYFEB3rjdAlW5FTL18HmZOWBGoJ8NFyWFnHSTqrJZKOk0UR6TMAx8wUAvLc6j/gQHTcMiaWgzsD2wkZuH5nQyT179POAk8lsc7Ayp4Yp/SK7sIpazHZcQnQKIHO5BBvz66lvtXJ5X/k51/LsaoxWJ0pJIiXSl7mbimlus6HTqLhtZDxljWb6xQQQpNNgd7qID/Y5K9Dhfz04DJkbceqLb2XpgGhk7kQDcuguyOvu/5sUjcyiiAQOIofUtzM7ci6CPUczW/ohl327XWnIIdAJyAgJ/TH2uxh2dlQkcpj/Abpe917ILI6urN5zLwnoiYwZqHVv61hOEcgclBwubnkey852hbq3t5f1xSzPdkUhs1Xaw/FBjqHxQcY6HG3TgA77XUi129lepqHILKEI5OeOF+KaJ4iziVA93RdwA7Kfvf3zH4GPz/E5VMiwoCzkhiAT6Hs+fs9p2qUD/Dq83wZMQb5ZnnNvfw6YfZHsS6RztPE7R9lV435/FbACuWEYCey6yHZ2ZJ+UAd+53/d1X3stkOSuE8oLYJ8EfA28f9T2juVZ0X6dL1Z5nsDO9gjzPcCTF7M8kTvAQPd7b+Tgx2nI/Jhb3NvrgJnu9w8Dn7jf3wL8cIHK8nh2dizL94G3TveaIzOAtiGDw/TAVmAYcBfy4NCI3AlnAtNOyd7zVAijgFUdPneDw7rBYWdrZzc47Nza2Q0OO3d2njE4zL2fv7tO34q8AMUbuNx9vruALe79FMADyA194MnsPdtMTCXI0w4n4BBCDJUkKRg5E9MEYAdwPTI5shsc9n9IDpcgv9bQ6QFs+jlIMtytCyuBvITWW61Ee5ysSN06O5lMJvLz8xk4cGCX7xoaGmhoaCA1VU7x6XK52LdvH6mpqeh0urMHh52gJysBQo/aNht5en8lMhWyif9ScJjN4RRNJutFOffvXXNWHRKJzy0T3+8qE9M+3CwSZi0TB6taLrZZvwu5XC7x5Pf7xA+7y0643ycbCsTnm4vO6lxL91eKhFnLRMKsZeKTDQWirtUitubXi9FvrhXzthz/2C6Xq9PnFxdni+cXZQmbw3naNizKKBc7ChtOad9fMivFH+ZuF6UNptM+z8VSS0uLCA4OFnfccYdYvny50Ov1nu/mzZsnxowZI4QQwuFwiI8//lio1WpRW1srhBAnBIedj2Qd1wAThRDVkiT1BzaIY4DD/hv02rKDfL29lP0vXXbSaNNunbpazHa+3VnG5D4R3DQsjnG9Qxn15jrWHaqjT5T/xTbvf1LtKeB+za7mcI2B/DojizIqOy1tbFdudSsvLs5hT6m8PHVEUvApr4A5WruK5WeBqZF+vLniEO+uPoxWJacpfPmXg1yZHtUpL+va3FpW5tSw4XA9U/tF8vLVfbE5XXztXsG1Jb+B5DAdCcE+3DUmieIGI+kxgZ4I06OVXdHCk9/Lz0qL/nblCVcc5dUYeGSBvKb/212lnQIG/5vl7+/Pli1bePvtt7n//vupqanhyiuvZO7cuQDs2LGDwMBATCYTKpWK+fPnEx4eftLjnu08SwCrJUna6179AscnRl4UtdmcbM6v7wJKcnSocG+vzCO/1tA+87hgyq81cMXfN/HU9/vJrjjC6Wi12Jn1YxZXfbgZ0zG4Gnani18yqyjXm7t8dyH11opDPDR/L1Pe38Q3O+SydLoEz/6YSWubnccv7QW4g1ISg3l3dR4LdpaxvbCRRxZkcMmcDXy8Lv9i/oT/WtW2Wjz1sazRzJi31jHz2wz2lOjJ7wDsqjN0TTz29spD7Clt4sYhsYToNLy67GCnui2EoNlsO6X6vrtEz7heoSx+eAzz7h5GkE5NZIAXr13bD4BMd711ugTfbC/hwfl7+c/eCvy9VHy9vZTZq/LYXtgIwI1DYkkK1dFotPHtzjImzdnAPV/u4dJ3N3DPl7vJqWzpAtibveqQ5/2PeyvIrz1CucyvNTDl/U18ubUYIQRfbCnGS61gUHwgv+yv8gRjnYpOBaTmdHm8E1gdThqNR9atu07jXMdSnz59+PLLL6moqCAnJ4eqqiqeeOIJAEaOHElzczNNTU1Mnz6dzZs3n9Ixz9bnHiOEqJQkKRzZr/4osFQIEdhhnyYhRJfU7+cyh2pBnRGT1cGAuM6slT0leh6cn0GD0co9Y5J46eo0hBB8uqmIt9yh4B0Dc6b0jWRSahjTB8Qcl82yr6yJ3SV6NuTVkxCi469Xp3nW7W48XC+vcU+NwOZ0MiJJDkwwWBx4qRWe2UGz2cZvuXW8teIQTpcciNNmd/Ly9L5IksS8LcWeCLm3r0/n5mHxnvO7XIJb5+5gZ7GeqAAvFs0c7cEJbDpcT+8IvxOGO5+ualos7CxuZPWBWh6e1JPIAC9+y63l3dV5nqjQdkUFeOGtUVJUb+KlaWncMzbJ853J6mDmtxkeTGyITkOAt5qiBhMf3TqIqwdEA/DD7nLSov3PaKRZrjcT4qs5q3XD51sWu5OsihYcThefbCqid7gvz1/ZpxNuYePheu78YheT+0RQ0miioM6In1bFezcPZFJKGBVNbRyqMfDg/L28OSOdaf2jeHThPqqbLYxMDuar7aU8e0UKD0/qyTfbS3hxyQH+fedQLu0TQXGDifu+2k1hvcmzT0c1Gq1syq/n8rRIMsqauOOLXTw5uTePuTtql0sgSWCxu+j38ioemtCDZ65I4dONhby54hAD4wL56u7h+HureOy7/fySeST6ePcLkz0j9JzKFg/OY8n+Kjbn19NkthPqq+HS1AjuGZuEVqVg4pwNPHZJT1YfrOWQG188rlcoKRF+bDxc7+noXpyWxlsrcrllWDxjeobw4PwMrh8cy8xJPViyr5J6o5UQnZbiBhOSBE1mG41GG2qlgqJ6I212J9cNimXOjf0xWh0syqhEo1KwYGcZNwyJ5Zbhcfxh7k6aTDaMVgcNRisCuG5gDH+akMytn+1gSr8o7hqdSErkqWMDhDj2WvyPP/6YTz/9lKeffprPP/+cLVu2AKDX60lOTmb9+vUMGjTowqxzlyTpZeSnuPdzxC0TheyWOT6diDMPYrI7XXy3q4wXl8jPab+8exguITBZnWSWN/PNjlKiA73x1arIrmzh6gHR1LS0sbukiQm9w4gJ8ubFq9IobzKzLKuaj9blI4QceRjoo8YlYGq/SCb0DiO7soWtBQ3sLpFDxduj+qIDvLksLQKXEMx3j17bO/HkMB0lDSZcQo5Wu2V4PE6nYHN+PVUtFkJ0Gr7700giArz409d72OGm4vWO8OXl6X3565IDWB0uHprYgyAfDRsP17Mip5pms4wmWJ5dQ7iflttHJhAZ4MXMbzPoEaZjySNjO3FcQG5cixtMfL65CI1Kgb+XGrPdSaivlukDoihpMBMT5E1qpB+SJGGw2HluUTa/doi4iw/2Qe+u3O0K9dXSM1xHcpgvJquD1jY743qFdWrY22WxO/kpowKVQuKagTGoFBJXf7yV3OpWnrqsN1XNbXy3u5yYQG/WPDX+lBrpBqOVcr2ZXzKr+XJbMZH+XnzyxyEkhOj4x/oCgnUaHhifjNMlaDTZTpjVXghBRVPbKfGGTle/ZlXzxdZiCuuNHjyDj0aJ2eZkUHwgj17Sk2GJwfhoVFz/r23sL28G5OjGtCg/LkuL8ITqt9s67aMtNJlsBPpoOFxrIC3an6yKFsb1CuWT24eg06qwO11c/vdNmG0Onr4shbdWyoOaEJ2GogYT1wyIprDeiJdayWOX9uJfGwrZUnAEORsf7MPCP40k5hi8oakfbKbFbCPM34vM8mYmpoQx765hnsbKYLEzf0cZb688RGyQN1tmXXLc8qluaeO3g7WsOlDLloIGwvy0JIfq2FPaxLbnLsHfS82yrCpKGk0sz66hsrmNAG81b81I52/LcymsN+GtVrLx2YmE+3vx3uo8PlxXAMj3XrBOS5NZjvS1O10E+2hIi/an2WynX0wA+XUGthY0MrlPBLnVR6Ky2xUX7O1h249MDmZYYjBtNiefbynutJ8kwd9vGsg1A6PZWaxHrZQwWZ3kVLXQLzqAAbGB1Bst2ByCUD8NT/+QychgC5aiPdx8883ExsZSXl7OLbfcQlpaGmPGjOnUuIOMAS4sLOTnn38+P427JEk6QCGEMLjfrwFeBS4FGsWRFHzBQog/n+hYZ8uW6RXuS0G9kaN/SlKoju8fGEmgt4Y3fj3I4v1VhPlp+ePIBO4YldClx2wx28mtkUPfW9rsGK1yxJpLyBetT6Q/1w2KYWp6JLFBPqw5WMv3u8vYkCeT424YHMvzV6ayMqeGTzYWUtJopk+UP38YHkdmRQs/7q3AR6MkOtCbZy7vzdDEYE94t8PpYl95MzqNij5RcgO7Jb+BZ3/M9CASvNVK+kb7Ex/iw7s3DmBnsZ5nf8z0VLqoAC9qWi08ML4Hz01N9fyujYfrefjbDIxWBwoJFJKMIvDzUqE32eg4oxwYF8j1g2P4clsJpY1m7h2bhLdGSZvNyaebZBDaVelRPHZpL8r1ZoYlBaNVKU4adXg8rT5Qw5/cXA61UmJEUghbChoI8lFzzcAY4oN92FncSGmjmdpWCwkhOu4dm8S0/lGsPljLzG8zcLpHkzcOiWVrQSOtFjtalYIGo4zDvSQ1nKrmNg7XGrh1eDzJYb4sy6oiJcKPtGh/ogO8iQ/xYVFGJZ9sLGRUcgi9InwZkhCEQpIY1yuUQB8NQsih7y1tMuAt0EdNuL+WUJ3W4wu22J2sza2jptWCxe6kb7Q/dqfggW9kBMaA2EAmpoTjrVEwNDGY9YfqeG1ZLg3uKX57KP/s6/szqkfICTuaLfkN3P7vnQDMvr4/Nw2Lo9Vix0+r6lS3Vx2o4cH5exFCvie+uGsYob4aXvnlIOsO1RHp74XeZKOmVa5nE1PCSI8JoFeEHxNTwo5LVX1vzWHmbS2mX3QAgT5qnr0i5ZjUU5NVRjGcCGXQUdsKG7jri904heDNGencdIznCnanC6UkoVBIZFU089PeCi5Li2Rsr1DPPnk1BnaX6BkcH0RatD9Ol8AlBEaLA++jcA5CCP6xvoCP1hVgc7r4+NbB1LRa6B8bwLaCRjYcruPWYfFdIIUrsqv5YU85MwbHMjghiKe+38/OYr2HN3UyKRUSz40PY80X77B161aam5sJDAxk2rRpvPPOOyxatKhL415RUUGPHj3YvXs3AwYMOC+NezLws/ujClgghHhDkqQQ5KWQqUAgcvTWZ+I8gMOsDifbChqZmBIm0+dKmwjx1aBRKokP8UGnUR43fPlUVddqoajBRFq0/3ErudnmQCFJnSpLS5udL7eWcMeoBIJ0csOw5mAtgxOCTrmSg+znq25po7bVSp8ov2OOZrMrWsirNTAxJYzXlh1k1YEa7hmThFqpIFinYfbKQ8SH6HhwQjKJIToSQnzwUsuVu6DOyP7yZmICvcmraeXLbSWUNJoJ8lHzz9uGMKqH7FpadaDGA0fa+twlxxzJnakK6gxEB3rjpVKiUEhsK2hgwa4yVh2owe4UJIfqSA7TEe7vxZ4SPYdrjUQHeNFgtJES6ccTk2WgV+8IP8oazby5Ihebw8Xjk3uxrbCR9387TGyQDz3DfFl3qA6b00VUgBdNZpsHAtVRyaE6KpvbPNwYrUpBz3BfqprbaDoGFM1XqyLUV4OXWklNq+WY4LTkUB1LH+06owK5Hm8vbCSrooWDVa2M7x3GH0bEd9nvWCpuMFHd3MbonqEn3K+kwYTZ5iQl0u+YxE2L3cnKnBoCfNRM7B12WmH750PyMwEuaL5YkDuiRqON+JAzm71Z7E4+3VhEdmULE1Nk74DDKRieFMzKHBlNEOqrQaVQUNJoYkhC0BlzZeB3DA7rVldVNrfx0Py9ZFXI4DMhZBfSV/cMP6FLol0ul6C8yUywToNfh86sXG9m3Oz1BPqo2ffiZRfk5q9oMtNotHV6luJ0CeZtLSansoVAHw33j08+aUfTES/scglKGk1EB3qjUSpoMFmpbGrz0Auv6BuJl1pJS5udeoOVVoudXzKrKG4wEeHnRXpsACE6DUE6Dc1mO3UGGYrVbLZjsTvx1aqYMTiWfjH+qJQKMkqbaDRZmdwnolN5dqtb50K/a3BYt44tm8OFSwhKG80khvoclzh4qhJC0P/l1fSPC+Db+0aeIyu71a1unY1O1Lifr2UFnkTZblUgZ2bqaFRHcJhRkqRucNiF0VmBw3LAvuD+i2JnR3WDw87eznZ1g8POXP8V4LDjfnO86KazedENDusGh517O7vBYefWzm5w2Lmz87TAYcisrRVHHTv/ONtuQQ4M3Y/cCTcgs2ySTmrveSqEbnBYNzjsXNvZDQ47t3Z2g8POnZ2nBQ4DxiDTH5Xuz1HIKJeao7YJYLx730vdx/ND5nXFn8zek/rcJUn6Arl3qhNC9HNvCwa+Rx5dlQA3CSGaJPkp2wfuyhPnNmI18gPVbnBYt7r1PyohIKdKjkZNjwnAYnee8fLXjjJaHXiplaguUiKTiyGXy8X+/ftJSUlBp9Oh1+tpbW3FarUSGxvr2VZVVUVMTAzV1dWkpaUd81gnAoedis/9S+Bj5Kldu54D1ooja9mfA2YBU5H9Yb2AJ5B71yrgi+M17ACJiYl0P1DtVrf++2S2OViws4z4YB9PPMJlw+NZuKuMBY+MoX9s4EmOcHztLdVz/b+2M7ZDftizlRCCjYfrGdcr7LSSrF9oTZo0ienTp/Pkk0/yyCP/n73zDo+q2vrwe2YmvfceQiD03kILTUAEBSuCYi/Y9apXxXItqFjBLh0UkaYgvUMgEAIJEJKQ3nuZlEkyyfTz/XEmk8QEgpR7vffL73l4SPacc2bP5Jy19157rXc9x5AhQ8jKysLT09PS1tDQwNtvv02fPn2IiIhg5syZDB8+HEfH5lwCQRAumdrfYRC4KIrHad4QaNIs4Cfzzz8Bt7do/1mUtATJNzpW/JuCwzrVqf82XSvDRGswWsoPXol2xBfz4e4UFu5ujmLecCYfgNzKa2MbLdojZcu2x366Wm2MLeDhNbFsO190Xa53ozR+/HiOH5fqIEdFRREREUFERESrtvHjxxMaGkpkZCRFRUXMnj0bT09PHn74Yerr6y93eeDqwWGXgoO1FyUT0N4FBEF4UhCEOEEQ4ioqKq6yG53q1P8PmUwiC7YmMOyjQ+3Cwq5Uj62N46Yvj6E1XJmBP22mQhZUNRIR5tkqAa+w+uqNe35lA3F51QwPcUNrMPHUurPtDjrpZXWcz6++5HVawrsA9iWVttsOEgTth8jMq+7z9dS4ceM4ceIEVVVVVFRUEBYWxujRo4mOjqaqqoqkpCTGjRsHSOCwzZs3U1FRQVRUFMePH+ejjzqeL18zfV+UnPZ/eTohiuJyURSHiaI4zMurfdZ8pzr1/1UlqkZa7ocdTCljw5kCqtQ6DiWXX9E1dieUsCuhGdylatRzIlOXDXXeAAAgAElEQVRJUU0j3x7u2MiJosjp7ErL7yNC3Dny6nhSF07D3cH6itLrL9m3RGlu+OU9g3h0TFcOp5ZzLq+tEZ+65Dh3/BBNe3uDaaV1DP/oEMfNMDq11kBsrjQYNSE7Wuqepaf4bF8atZrWkYhJRSpSS2vbHG8ySaTJ8tq21+qIOGkwmli0J+WSA+CoUaNQqVSsWLGCMWPGABL619/fnxUrVuDv70/Xrm35TMOHD+fOO+8kKanjKOqrNe5lZigY5v+b7rYipI3UJgWa226YqtW6S76WWV53TbOc66UPdyWz5GD6f7obnfobyGSuUNWgM7QCsLXU90czGbVIQvwuO5ZFVkU9O+KL8XCwJsDVjgPJHadyGE0i7+5I4u0/kiwY3WgzECzA1Y7lUdkdIqPjC2ooVmksFZiGhrjhbGuFrZX8kuwUo0m8rOE7kaGkQWfgl5g8hnVxI9jDnqfGhwKQ1gLnC9Lz26T8dvp6KkuJSYSDyVKY+Za4Ahp0xnaPbwkCS2qB1z6ZqeTWb09w5w/Rba4fm1vFB7uSeW9n6+3CqIwKur25xzIg6I0mPtyVTK6yORUgvqCGZcez+e1sYbvfg52dHcOGDWPx4sVERERY2seOHcvixYsts/YTJ06wYsUKysslE5uamsqOHTsYObLjRMKrNe47gIfMPz8EbG/R/qAgaSSgauG+ue7acaGYkYsOk6Nsm19RWa/l9u+jmbs8pg0jGmh3JnAlSiutY9KXka1uvEtpS1wBIW/sZuWJHL4+nHFNfsWMsjoSC1V8eSDtkkvqOo2elzfFWwosdOrvpcLqBj4/kMaUJcfp++5+7v4xuo0PPb6ghs/3p9HX35lDKWUs2pvKrO9OcjCljBkD/JgxwI8TGco21MIcpZqsCskPW6XW8fYfiSjrddQ06IlMkwzD/oulONkq2PjkSEwmkfWn8ymoauBkCwqksl7LjgvFZJbXsWBrIl5ONrw9ozceDtYMaoGBkIx7W4P79h9JjFx0mEPJZRj+dL+fzq5k3qrTzFkeQ1FNI89OknDDXk42uNlbkVba+pn6/VzzvDCmxQqiSefyJXJmk89+9clchgS7MrWPDwVVDWgNRvIrG5i65BgPrT5jOe98QQ27EoqprNeycJe0l9CgM7aZCB5KkQaNarWewuoGjqVXoNEbeX+ndM6eRGmQPZVVycoTOTz1y9nm9zD37Ww7q5EmjR8/nvLycsaOHWtpi4iIoLy83GLcXV1d2bFjB/3798fR0ZFp06Zxxx138Nprl2UxAlcQLSMIwgZgAuApCEIh8C7wCbBZEITHgDxgtvnwPUhhkJlIA4cgCEImUkLTJcFhV6uRoe7IZQKf70/lh/uHWtprGnS8/nsCap2BrAoDK09k88yE7myOLaBY1cigIFee/uUcw0Lc+O6+IdgoZOQo1YR5O6KQyxBFkS1nC+np48TAIFficqs4klqOXCbwrRkjuuVsIU9GSCjZi8W1vLfzIt/fN8TCIU8orOGtbdLSSS4TMJpEzuVVE94CEpRXKWFKne2ssFHIiMmuwtlOQVxuNQMCXRgcLGHwD6eU8dhPzdFE8QU1vDm9d5uqRuti8th6voit54v4es4gZg1qd7vj36akIhWHUsp4cFQI7jcQACWKIjsuFFNZr+OuoYG42FkRnamkukHPjAF+N+x9r1RppXUcSy/n031pllmto7WC1NI6jmVUMD7Mi42xBfwQmUlhdSPuDtZsmj8KB2s5hdWNPLT6DJ6ONjw7sTsGM1vnnT+SeHxsV746nEFKSS16owmTCe4ZFsip7EqyK9TIZQLuDtYsPphOvwAX9iSWMndEEEHu9ozu7snWc4UcSC4lu0LND/cPYWJPbx5cdYbkEmlG6mSj4Ks5g5jUy5v7w7u0qoIU5GbPoZRyXvvtAheLa/nnzT0JdLOzbLY+/nMcMwb4cUs/XxQygZv7+rLDzHZPKFQxKMiVCT0kd6wgCPT0dSImu5LyOg3eTraWKJ2b+/pwNq+a3YmlDApyY29SCTHZlXg72XIuvxoruUBuZQNvbk0kv6qBd2/rQ3RWJQeSy7h5yfFWm75vTe/NL6fz+Hx/62T4B0Z2YV1MHjHZVcwc6M/x9Aq+P5rJhULJQOdVqnn8pzgLT75JTW6kI6nmWXVpHaeyKhnVzYNz5n2C+PwaTCaROo2BYlUjjjYKvjiQhpu9NaG3PMF0v+lcaHRjiPmas2fPZvbs2Zb36NevHzt37ryq++6/Hhy25GA6Xx/O4If7h2All7FwVzIavZEqtY7Xp/UiLq9KKn4wOoTVJ3LQG6XPa2slQ2swMba7J2mldZTXaZnUy5vXpvVk9YkcNsdJeN7IVycw49sTVNRpkQnSjWg0iXg72WAll1FWq2lVBHr++FDCvJ348kAaArDrhQis5AJDFh5kRFd37hoSSFmtlvyqBrbEFWAwiVjLZQwIdCHuT6P869N60cffmVc2X0BZr8XV3orbBvjzx/kiHG0VHH11AnKZQGpJHTmVat7bcRFfZ1scbOTE5VXz0yMjiEyroE6j56HRITjYKKht1BPoZsep7Ep+icnj/Zn98HWxpU6jp6ZBT3WDjiq1Djd7awYFu+JgrSC3Uk1RdSM9fZ1wtFFQq9HToJPinO3NdEm1zoCTrYL8ygbe23kRe2sFh1PKMIngZKvgoVEh3DbQH7lMwg0rZBKuVS4I1Gr0nM+vxs5agZOtAnsrObUaAwMDXbCxkqPVGzmcWo5aa6CPvzOhno4cTSvnywNp+Lva4eloY3nAvJxsGBjowqEU6fdfHgvH31UCplkrZNQ2Gqhp1KFq0KMzmujh44SVXEaDzoC7gzV6o0iVWktUhhJ3B2uGBLuRVVHPyUwlrvZSgREXOysadUZCPB2ws5KjkAso67XkKtVkK9Vo9SaylWr8XGyxUcjYa97ks5bLuHtYIP+Y3AMXOysmfH6UOq2B3r7OnMmtYlgXN0K9HJjc24epfX0t90FL8BnAd0cy+OpQBgaTiJu9FRFhXgiClOGyJ0li/P9jcg+6eTtSpdby6No4XOysqNXoOfiPcXT3dmJTbD6v/54ISKzy8lotfi625JoxzyZR5JkJ3S9Z/i4yrZyH18S2+9rvT4+28OubNCrUg4TCGmys5FSpdfz86AjG9Wjea3tvx0XWRucCEufe3lqOsl7H70+P5mxeFR+bI2uaYHhNeuOWXnxzOIMGnZHwru5sfHIk62Ly+Nf2i9hby5nc24cJPb0YG+aJt5Mta07msCm2ALXOQEFVI6O7ebDqoeGMXHSYIHc75oV34aM9KbjaWzE61BO90cTWFpE3w0PceOGmMI6mVrD+dB4LZ/Xj8wNpeDhYWwz442O7sim2AKNJRK0zcvfQQCLTKixY56bP2KAzYqOQsfSBoUzs2XHZvPb0Pw0O0+iN3PJ1lMU1E+Ruh7OtFR/M6sfQLm4U1zQyf91ZkktqcbZVcPvgAKzkMuaPC2VzXCGf7U8lxMOB4SFubI6T/GMyAXr5OltmMHKZwHdzB9M/0AU/FzuWHstqNfrP6O+Ht7MNa07mWtrCvB1Zcu8gy0y+aRBqKTd7K+aMCGb/RWn2NGuQP/uSSgkP9cBaLrMsC72dbPj1iXC6eTkiCAIx2ZXMWR5jWRE0SSET2PXCWALd7Jmy+BglKg1ymYC9tZw6Tfv+3RshG4U0cA4PceP1ab1YczLXsoF2PTUwyJUqtZaCqkZem9aTEA8Hnll/DicbBXcPC2RLXOEl/dod6c9GxEYhQxRB14FrzclGgVwu4OVoQ53GQGmthucmdmdYiBthPk6tCJZ5lWoW7komLq+aZyd05/GIrldM2yyr1fDr6XxuHeBHmE9z5Z8/DwQglaf78kAa/7y5J3cOCQSk52b96XwCXG0Z0dWDe5edIqO8nvvDg/nojv5X1IcXN54npaSWL+4ZyEOrzzBjgB/DQ9yZNSgAjd7IN4czGN3Nk4SiGn6LKyTAzY6Fs/qhNZjaVCvKr2xgb1IJBpOIsl5LYXUjdw0JZFo/X/RGE+/uuEigmx1zhwfjYmfFP39LwMfZhlen9uRYRgV7E0t4+9Y+ONtaUafRs+NCMbf298fF/tIkzqyKerp6OCCTCRxKLuPZX8+hNZjwcrJh69OjCXK351x+tcUfH/3GJPzNf78cpZoHV5+moKoRT0drVjw4jF6+zjy/4TyHUsro4mHP13MG89vZArbESQVqZg8PYn1MPv+6rQ/zRnYhOkuJs63VVde3hf+Mcb8bmCaK4uPm3x8AwkVRfK7FMS3BYT2RUp3/ijrBYVenawKH8e8BXbXXz5bqBIddez+b1AkOu3r9LcBhl8pQvRKewmqkaJiWECd3pMpLGeb/3VqwFL5B4oJUAUPM7Z3gsE5w2LX2sxMcdn372QkOu379vFJwWAF/DRgmIg1g9UAlErPo3ivt75WwZcaZL/6z2MyW+QyoEpvxA26iKL4uCMJ0pCLZHwBLkFYG4R25ZTrZMp3q1PVXg86AIAjYXQMDRm80UVTTSKCbvYX/IorStR3aqSrVqUurvr6ejIwMBg0ahCAI6PV6UlNTMZlMDBgwwNKWkJBA//79SUxMpG/fvtja2mIwGFCpVBQWFuLl5YW/v1RQ/nJsmaudRaXRPFr5AWnmn5cBc2meVWcDwXQwqx46dKjYqU51qmPtTSwWP92bctlj9iQUi73f2St2eX2X2Pdf+0STydTqdWWdRtQZjFf0fmtP5ohdXt8lbjqTL4qiKGr1RnHyl5Fil9d3idGZyqv7EP9PpdVqRTs7OzEuLk4URVHctGmT+PDDD4vjxo1r1datWzdRFEUREDMyMlpdY8uWLaKNjY2oVCqbjokTL2FXbwh+QBRFA/Acks8sGmnZ1Mp3er3wA2IHK48boevFwehUp/6KkopUPPXLOX6IzGo3t6NJa6JzadAZcbJVUK81kFXRfGxCYQ3jPjvKnOUxNOg63mxuCgc8ZY4z/yUmj4zy+lZtnboyWVtbEx4ebuHHHD9+nIiICMaOHduqrSnGvT3NmjULg8HAmTNnLnlMk24YfkAUxT3AKeB2sR1wmHgd8AMnMpTc8nUUNQ1ts1T1RhOZ5XWteBXrYvL46lA6iYUqNpzJp1F35QClJh1OKaPXO/s4m9ecKJRRVsdXh9Kp09yYvbFcpZohCw/y5M9xpJS0TZPu1P+WcpVqnv31HFkV9a3u0R8jsyw/77/YftzAxWIVZ3KqeHVqD/a9JBmJw+aoK6NJ5MWN8djbKDibV80vMZcECqLRG9EZTFwokIz7tvNFzPgmig92JTMq1IP+AS6t0AR/J+VVqv8jk74r0ZUCwy4lKysrPD09qarqOFHxap1mTfiBU0iAejtBEOKAs0AvQRDeRXLl+CP562+IPJ2sSS2t49cz+TwzobulXdWg576VMVwsrsXbyYZv5g6mq6cDH+1ORqM38dUhKSQxqUh1RWFfaq2BFzee53iG0pLtuvFMAfsvlpFaWmdhW1jJZTw7sbkfycW17Eks4aHRIXg6Wl9VUWlRFPloTwqNOiOnsiqJTD/J4ZfHE+Tetjp7U/FoPxc7pvf3/Y9XsO9Us0RR5EKhirTSWuo0BmSCgLVCxryRXQCJRfLWtiRyKtXkVzZQWqthd0IJ7g7W/PJYOIsPpnEopZwnx4VyOqeKH45m0tXTgZv7+tKgM/Dm1kQUchnH0yvwdrJh9vAgvJ1s6e3nzOGUcuaP78b+i6XkKNV8f98Qvj+aycHkMp4c161NX8tqNdy77BRqnZGKOi2DglzJrVRjNIm8PKUHc0YEsfxYNj/H5LXhumv0Rp7+5Sw9fJxYML33v/X7/fVMPqUqDd8eyeSH+4cwvX/bBDajSbwmFLAoikSmV9A/wKUVRO1KNW7cOL7//vtWwDAfHx8eeuihNsCw9qTX66moqMDd3b3D97pa494SP7AFsBVF8TVBEGYA3wLLgUjza48gsd6vu3r5OjOmuwc/R+cxf1w3diUU4+5gze6EEtLL6nhrem82xObzyJpYTGIz88LN3oqJvbxZfzqfSb28WXIoneIaDf+YHMYDo0JQ1ms5k1PFsBA3vJ1s+WxfKkdSy7kvPBh7awVxuVXsu1hqiR33dLTBw8Gaz/encSytgvVPhPP2tiR2XCimUW/ku6OZ9PRxYvmDQ7G1knMopYw5w4PZnViCtVxgah9ftl8oYt2pPOYMD2b2cAnPYzKJrI3O5WByGW/c0ovbBvoz8YtI3t+ZzGd3D2iT9bknsYQPd6cAsPyBoUzt60tBVQNP/BzHZ3cPaMXe1hqMZJTVX1OMbaeuTDqDiQdXnyYmu+1sq6imkdnDgnhlczzn8mtQyAT6BbjwwKguLD2WRZVax/RvorCWy5jUy5tHxoQwd0QwL248zwsbznN/eBd2XCi2JMjIBNjx3Fi8naTErcm9vfn+aCYFVQ18vCeFUC8HpvXzJa20lm+OZDLy48MMDHJh3sguRIR5UaXWMW/laSrqtPT0dSLM25GP7+hPiKdDq36Hh3qw8kQOFwpqWmVdf7ArmaNpFRxNq+CRMV3xdbHt8PtJLa3l4z2pLJ49sJXBLFVpWHosCz8XW+aPbzsItdR3RzL5sgW/KTpLaTHuNQ06Fu1JJbdSTWF1IzufH9vq2ams1+Jgo7ii4iNvbktkw5kCHKzl/DBvKON7eGEyiey/WMqgYFf8XOwue34TMGzRku8YMkLiw1wJMKxJ27dvR6FQMGLEiA77ek34ASQf+3jgDvPhe5DKTD0F3A88jhQaeUOMO8DsYUG8uDGeNSdzLIYNYN7IYJ4YF8ot/X15+48kuno6cNtAf3ycbXGylT72gYtSWr+jjYK+/s68s/0idVoDG87kU1DVyOTe3nwzdzBbzxVx+6AAPrxdmuW3zM6LCPPklak9MRhN3L30FGdyq9gSV8imuALGdvfksbFdSShUsepENu/vTEZvNBGVoWTbuSJLRuo/Jvdg+4UisivUnMuv4XhGBSEeDqSU1HI4tZyIME+eiAhFLhN4dkJ3lhxK58WN51n3WDhVah0nMpWMC/Nk1YkcAlzt0BqM/Hwqj6l9pc+eWlrH1nNFhHo50qA14GxnxbSvpNTsXc+PpV+AC3qjiS1xhdzc1wePq5iRXEr5lQ0kFau4pd+NW0lIG0i0Sd75T6pUpWHr+UJuG+DPV4cyiMmu4u0ZvbnZnHlaXqdlw5l8fozMYs3JHAQEvrhnIHcPDbRc49mJ3TmbV8WO+GKm9PFlbJin5bXVDw/nsbWxrD6Zw7geXjw+tisf7EpmfA+vVgP25N4+fHskk7t+jEZZr2XLU6OQywRmDQ5gV2IJwe72nM+v4VRWJVGvTeLTvankVTbw06MjGNWt2Wj/WSNC3BEE2GxOFBvVzYOi6kY2nslncm9vjqSWs+x4Fk+N70ZioYrJfaRtuTqNngMXy+gb4MyehBIi0ytIMIO8Fu1J5dO7+qOQyzCZRJ799ZyFzRIe6tGKbdNSaaV1fH04AycbBXXmpLXz+TW8vCmeA8llbRLZbvv2BBN6emEll7E7sYSKOi2+zrZsfHJkq0GspkFHbaOBADfpmVofk8+GMwXMGxnMubwanvw5jhOvT+LLA2lsjC3ARiHjm7mDubmvL6IociJTiZOtVat+29nZ4de9L4sXL8Ft9L18ui+VFyaFWYBhkydPbvczVlVVsXfvXl5++WVef/11PDwu/bdp0jUlMQmCkIOURCQCy0RRXC4IQo0oiq7m1wWguun3P51rSWIKDg4empd3af/f5VTToGPQBwcBKTtw3qgu7IgvZuOTI9t1XbTU4oPp/BSdy5pHhjMgwIVH1sYSlaFEJkCwuz2F1Y28MrUnn+5LZdOTIy0zFFEU6bpgDwDn35mCm3kWkFSk4tZvT2Atl2FjJSPu7cnYKKTZwKf7Ui0+01BPB7KVavoFOOPrbGfJRH1pchironJQ6ww0JZ4+Nb4br07tgULevD3y2b5Ulh3P5uzbk3l1S4LlfIAPZvWlpkHP4oPprHl4OI+slQah8K7uqBr1lNdpeWFSd94zw4/eubUPj43tyvLjWXy8J5Ugdzu+nTuEXr5Ol53JqLVtQ+FEUWTR3lQ2nM7H08mGe4YFsim2gLzKBp6f1J1Xpva85PU0eiOnc6po0BqY9hcHggVbEzmRWcE9Q4OY0seH3n7O5CrVlNZqGBnqQWZ5PSEe9q2+wz/rWpfrLZVSUsvsZaeo0xgsma4v3hTGP6b0aHNsU+bypV7vSC3dIu19BlEU+WRvKmujc/nw9n7cMyyozTVSSmqZ/k0UM/r7sTeplIdGhfCv29ov69ZSIz8+TKkZhxvkbodcEKhS6zj66gS+OJDOxth8mszLS5PDSC2p42Sm0mKAQcq+Lq/T4ulog7Jei7+LLS9N7oHBJPLmtkTen9mXb49k4uFgzR1DAvBytMHV3gq1zkgvXyfpWY8twCSKHHp5PH+cLyKhsIY/4iWOzahQD05lV3LrAD++nTuYfUmlbDlbyIlMJXqjiWl9ffFxtuX3c4UEutmz7ZnRLNyVzJ7EEuo0Bgxm1EiQuz1n86oJcLXjyKvjpcnf4mPM6O/H7sQS7g8P5mJxLUlFKtY9Fs7xjArL8/7GLb3o6ePEd0czCfN25McvFlIb8xsPfLKB49VO3B8ezEB9Cvfeey9Lly5l/vz5gIQ6sbe3RxAErK2tGThwIE888QT33Xef5fu7YRmqgiAEiKJYJAiCN1Iy0/PAjpbGXBCEalEU3S53nWvBDwBMWXyMjPJ6vrp3ELcPvnJYliiK6I0i1makaa1Gz+6EEnr4OGKjkHPrtycAGBjowh/PjmllcOILakgsrOGBUSGWNoPRRPe39gJw77AgPr17gOW1HKWaiV9EEhHmydpHRlBep8HL0QZlvY5H1sZSVN1A5D8nojeasLOWk1leT2RaBS9M6t7GKMUX1HD79ycZEuzKufwaJvb04mia5PdP+3Aa+ZUNTFkibdDYW8uZ2Mub3QlScFOTsfF3sUUQBPoHuDCplzf/2iEly1rLZdRqDPg62/LzYyMI83bkq0MZHEwu451b+7D/YilFNY0cSS3nmQnduKm3Dz18HInOrCSzop5P9qYytY8PtRo9MdlVWMtlhIe6E5Wh5Kt7BxEe6m5ZuhpNIjsvFHMsvYKdF4oxiSImEWYN8ueJiFD6+jsjCAJag5Hvj2YRk13J53cPoIuHA0aTyIYz+RxJLbdwZQBCvRxY9dBw5iw/RWW9jogwT46mVRDe1Z3hIe5sjM3Hx9mWAFc7rMysl/P5Nfx8KpfZw4J4c3pvRFHksZ/iSCpS8dq0Xswc6E9RTSO+zraW2HE3e6tW94PJJKIzmli4K5kNZ/LxdrJlwfRe7Eoo4ZHRIYzu3jzrbimD0cTxjArGdvey3Ic3Qh0NXi9uPM/2+GKcbBUceWXCJZkyLbXxTL6lpN2/tifhYKNg5UPDGB7iTpVax/x1ccQX1Fh4Tq72Vtgq5Dw9oRsXi1WotUY+v2cAf5wv5taBfpzKqmTF8WzLinZkqDsbnhjJlrhCXvs9oc37ywQwieBsq2D1w8MZFiL5oQuqGvj2SAYjunpw15AAjmcoGRLsipNtM4pAazBiMoGdtTQwHkwu44mfJQaPqlHP4GBXwrt6EOJhz+f706hUS/fSwln9LLP72eaVuqONglMLJmEwikxZcgxlvRTgMbm3NzZWcnYnlKCQCRYGVZi3IzueG4udtZxTWZV08bC3YA3+qv4t+AFBEN5D2jx9ApggimKJedM1UhTFS0/ZuHbjnlepplKtY0jwZceQvyRRFPniQBorjuew6uFhRIRdWUTPixvPcz6/hh3PjcHVvrVPvKxWMuh/dh+IomQYmmb5HclkEpn5/QmSimoZEeLOL4+Hk1BYg6Otgl6+zq1WFs9P6o6/qx0LtiZyz9BABgS68MGuZF6e0pP0sjpLObJRoR58PXcQAJGpFXy2P5WaBgkyllvZYLk5m/5vWn3IBHCylR4IkNwAyx4YilwmkF/ZgKOtAlsrGbO+O2kJoZvc2xsruYyM8noyzW039fLG2c6KLh72lg3vSb288XOx5UxOleXcPn7OvDWjN2tO5nAopZwuHvZM6e3DK1N7cjCljBc2nAfAzkqCT9VpDdw1JICt54rQGkxEhHlSrzXQqDNSWN3YZsk+KtQDkyhaKhC1ZMw0MXNAmnHeH96Fvv7OJBWrWBWVY5mR3hcezNPju3W4cvw7KVep5q4fo3ltWk/uHR78l8+v0+jNELW2A1RmeR3JJXVM6OmFs+2lWS8gDUK/ns4jJqeKf07tSYinAyaTyFeH0hkZ6kFWRT0x2VXIZAKudla8PKUHznZW12XVtfNCMdvji5je3487BgdYBu8jqWWsjMrhx3lDcbFr7n+uUs2akzkM7+rOrQOkpKLY3CpOZiqZ2NObAYEu6Iwmnvz5LDlKNesfD2fNyVzuCw+mu7dju334q7ohxl0QBAdAJopinfnng0iZqTcBlWJz9qq7KIqXhQ9fq3G/kTIYTZddzrd3vFwm3PBIFY3eyK6EEqb09mkXjvRLTB7n8qv57K4BGEwiB5LLmN7PF4VchtZgxFou42xeNatO5DC6uyf3jwhuNeiU12lYfSKXjDLpoZzU24fYnCoGB7tayIglKg0/RGai1hqZ0seHUpWG+0cGtztIaQ1GojMrOZVdye9nC3G1t8Lf1Y5ZgwLafIbU0lre+SOJ2NxqnGwU9PJz4qHRIVQ36HnnD2mFIRPgvZl9ebDFygngWHoFZ/OquXtIIHK5gAD4u9qRXFxLdJaSR8Z0tRiCxEIVe5NKeDwiFAcbOYsPpBOdVUlqaS0hHg5snj+Kp9efJSa7il6+Tozo6k6opwMGk8jJTKVltQTSoDNjgB9dPOyZ0d/vvzJS6Xq6pjrVrD97CK6nbpRxDwW2mX9VAL+KoviRIAgeSJutwZhZ76IoXjYoUxCECvOxf0Wd4LCrUyc47PqpExx2Y9QJDmIJi0wAACAASURBVLtydRGvMzjsPaTyefHmf9NbvLbA/MHSgJs7uv7V/qMTHHa1/QuhExx2PfrXCQ67fn38rwKHAQ8jDdhGpMnlT+b2jsBh/9Zn6GrBYe8B9aIofvGnY/sAG4ARSDPWQ0APURQvmwraCQ7rVKf+vhKRrFOxqhGFIMPTyZpqtQ53Rxv+vzlxysrKKC0tJSQkBGdnZ3Q6Hfn5+RgMBnr27IlMduM2xdvTjQCHvQe82s5xC4AFLX7fD4zq6Pqd4LBOdervqfP51WLYW3vEU1lKsesbu8T+7+4T562MEbu8vks8kVHxn+7ev1UqlUp0cHAQN23a1Kq9rq5O9PT0FFetWiW6uLiIDg4OooODg2hvby8CYk5OjiiKorh8+XKxW7duopubm3jbbbeJRUVFlmsA4o8//ih2795ddHFxEZ955plWwLdVq1aJvXr1El1dXcWpU6eKubm5TeddPThMEITVSMuN7i2a7YCFgiBoBUEoEgQhxNweAEwQBCFTEIQEJDRBu7GJ1wsc1qlO/X+RySRSUNW2KPVfUYPO0Iq31JGi0ivQGUy8uTURkwi1GgNRGVJB7aLqxg7OvrzqtQYeWxvL0RahrNeqijotD64+06aA+PVQdHQ0Go2GO++8s1W7o6Mj06dP5+DBg9TU1FBfX099fT0vvvgiERERBAQEcOTIERYsWMDmzZspKSmhS5cuzJkzp9V1du3aRWxsLAkJCWzevJn9+/cDUlbqxx9/zNatW6moqCAiIoK5c+d22N8rWUOspRk10CQHpMgYOyTf+g5zexekTZAwpASl0Ze6qHgdwGGd6tT/J7362wUiPjtKojmjsyNtiSvgt7OFrdrmrzvLoA8OkGCmPXakeDM4LFupppevE/bWcks4YP41DjQf7LzI4dRy3tqWeE3XaakfIjM5nl7BtnOFbV4zmUS0hr8OC2ySUqnE09MThaJtYr+fnx9KpdLy+6ZNm/j111/5/fffsbKyYv369Tz66KMMGTIEGxsbFi1axKlTp8jNzbWc88Ybb+Dq6kpwcDATJ04kPj4egKVLl7JgwQJ69+6NQqHgzTffJD4+no4SPzs07qIoHgf+fDdNAdaKomhCQgs0xbF7A8nmlUQM0iCg6eg9OtWpTjVLozeyObagFWX0fH41W89JOQlLj2Vd6tRW1/hgZzKL9qRYmErVah1RGUo0ehP/2BTfIbpaFEUL8hdgWj9fIl+dwOk3byLY3f6ajHuVWmf5PMUqDSFv7KZU1dZUrD6Rwxct6hV3pKaBrwnw11Kv/55Av3f3YzJdfp/xUvL09ESpVGIwtEUll5SU4OkpJaqdP3+e5557jm3bttE0cS0uLqZLly6W4x0dHfHw8KCoqLn4tq9vc1F0e3t76uul3I68vDxefPFFXF1dcXV1xd3dHVEUW53bnq7W++8rSklKucB2wMpMhWwEwgVBOGRGE9ia29roerhlMsvr+Nf2pHb/kAC/ns4nMu36LflASrv/6lD6FRVeFkURVYOe384WWjJEr1ZND6ihkyX/Xy2dwcSprEryKxvadbGIosgrmy/w2u8JTPg8ktd+u0BhdQPLj2fjYmfFAyO7sDephPLaS8+ZYnOr6PXOPuq0BirVOuILpIzP4xnSc/bCpO5kVagtCWyXUkx2lSXbEmBCT2+8nW2xtZJf0riLonhFxnN3QjEGk8iGJ0bi4yxlw8bltY6YrtXo+fJAGiuistt1JZWqNNzydRRppXWABAs7ly991rw/9a1RZ2TL2UL0RpHMimZQrUZvZMHWRJa0gI41yWgS+fpQhuXvNGrUKGxsbPhh7a88vOaM5W9QX1/Pzt17GD9hIuXl5dx+++0s+fpbVqWIpJdJffP3928101ar1VRWVhIQ0HFGfVBQEMuWLaOmpsbyr7GxkdGjL+kYAa7AuJvBYVsBG0EQCgVBeAwJ8ZuIFBGTANSKUiB9PVLM7GBAhxT/+WB7170ebpmC6kZ+PpXHnsS2hvNwShlvbkvk6V8kLjbA2bxqjqSWUarS8PYfiSQVXdnytknFNY28uDGerw5lsCWuwNJeVNPI+zsvUq1uzZX/eE8KAz84wKtbLvDsr+eu2jBnVdQz9MODzPruBCM+PnxJv2t5rYYpi4+x7FhW04Z2p/4mEkWRXQnF3LM0mrkrYhj3+VHuXhrdyk1wMlPJo2tj2Z1YwuTePshkAjsvlHDLV1Hsu1jK/eHBPDImBJMIW8zuFpNJpKxWw8qobNaczKG8VsOrW6SQ716+TljJBXYnSCHrexJL8HCw5sXJPQhwtePAxTKyK+pb+bzVWgNHU8t5d3sST/wcR4iHPVufGc38caEMaAEkC3K3b/c+/Nf2i/R/bz9fHkizTEia1ISMaAJ99fV3ZmSoO1GvTcJKLpD4p+dxc2wBap0RrcFkAYi11I4LRaSU1PLJ3hTqNHqe//U8oV6O9A9wIa+yuW+nsip5f2dzusSZnCpL397+I4kNZ/L5+nBGG5fN4ZQylhxK5yMzkNDFxYVX3niTV//xInv37mPr2Txyc3OZPutO1AoX0p0Hc/fddzNv3jwCh05iV0IJG87kAzB37lzWrFlDfHw8Wq2WN998k/DwcK4kSvCpp55i0aJFXLwofQaVSsWWLVs6PK9DKqQoinPNG6a7xOZQyNeAqUg891eQjD9Ise9DgH7mmX0mMKbDXlylxod50c3LgdUnc5g1yB9BEBBFkcMp5Tyz/hw9fBwpq9Xyzh9JLH9wGPPXxbWaiWyJK2TPixHkVKiJL6jh7qGBhHg6YDCaWHkih4GBrozq5sGPkVl8dyQDdYvCCbG5VZSqNBTVNHKhsIaCqkbsrOQ8O7E7DjYKfjtbyIqoHBys5cgEgTqtgZjsqlZkvyOpZThYKxjR1Z2KOi0/n8qjp68TrvZWhHo5EuBqhyiKLNyVTE2DnpoG6eZ/ct1ZPrqjXxvcwi+n88kor2fR3lQcbRXcH97MCm8vy/bfkZFoMon/MVqjKIp/i0zR4ppG1kbnsvx4NiCB45ztrIgvqOHX0/ncOSSQt7Ylssu8uhsc7MryB4YikwnkVaqZv+4sYT5OvHBTGLZWckaFevDFgTSyyuu5UFjTqtLS+zuTUcgEfn0inNHdPHlhw3k2xeZz19AADiaXMX98N+QygUm9vFlnzmKuUutYdGd/5o4I5q1tiRbo1qxB/jw/KYzu3o5t7rVuXg5UqnWsOJ5NvdbA3BHB2NvI2RRXgM5g4tsjmZhEkafGd6O8Tks3L0d2JRSzYGsi1nIZ1goZX8+RaolaKwR6+jpxsai5EI3RJPLTqVz6BTiTWiLVTBhj5vPkKNUYTc0GP7Golq8PZVCp1rH64eFsjC1g54Vi5q+LI6mo1rK5+siYEHYllPDujoss2pPCTb192HGhmDBvRzLK64nNqWZsmCe1Gj37k0pZZy5mUqJq5IfITHbEF1PBCNzGPUj10VU898dHeLi50nXoBLznfMTm44kURUVx9uxZvli8BL1RZOESeCQjjcmTJ7Nw4ULuuusuypVV+PUYwMOvfcKyY1kMC7k8NuWOO+6gvr6eOXPmkJeXh4uLC1OmTOGee+657HlXlKHajnH/HKka93ykBCI58C8k4/6HuS0cCffbQ7yBVMhfYvJ4+48kfnksnL1JJaw/LY2U/QNc+PnREWyPL7IQEEGCDNlbK/jojn68sOF8K4Md4GrHN3MH8fVhaVMm1MuBbc+MYeynR9AbTTw3sTteTjYcTC5vRWJ0slXQxcOepCKpOMji2YN4dG0sw0Lc+OnRERhNIkMXHmRMd08iwjzZk1iKu6O1xVXT08eJsjoNNQ2tE9fmjQxG1Whg54Vi3rm1D1P7+JBYpOJf25Ows5Zz7NWJiEil0GSCwOM/xdEvwBmjSeRMThVRr09k8YF0fjtbyHf3DWZ4iDtqrZEgdzu+P5rJiqgcfn96FN29ncz+VRXeTjb4mRncV2MYVY16fjiaibezLWdyKjmYXEaIpwMf3t6P0d3ah2eBZIgNJhFR5IrTtJOKVFjJZZzLr+bLA+nojSbenN6LWYMCeHlzPEXVjfz29Gis/gI+okkmk9Sfv5oyXqXWkV/VwC8xeeiNJnydbVl9Mge9UWRqHx+emtCNQYGuCALMXRFDTHYVgW52lKo0PD8pjEm9vAl0s7OQRtuTqkHPkkPprI3OpaunA3NHBOHjbEuq2T0xZ3gQXTwkuFVqaS23fB2FjUKGyQRH/zmBAFc7TmQombfqNNZyGQMCXUgoVPHGLb34YFcy43p48cqUHgy8BGIXpNXqmE+OtGoLcLWjqKaR7c+OYc3JHP6IL0YukyZci+7sz8qoHDIr6hFFWHh7Px4Y2eyDXrA1gQ1nCujt58ytA/zQ6I18eyST7+8bwrbzhRxKKadfgDNF1Y1Ut3hOfJ1tLWTKe4YG8vk9A1l6LItP9qYCSKjvAX7MHh5EoJs9X+xP4+dTudSaazH08HHkl8fDifj0KDf19uabOYOZvewU5/JrsJILONgoWj2XXk42rH88nN/PFbIqKocdz43liZ/jEEWReq0Elds0fyT/2HTBUjVt5YPDOJtfzdHUckyiSHpZPQ7WcovteXpCN16f1uvyN9YldE34gZY8dyQ3y7tIBnwzzRlszyBlkz2PxJgpBBqQCnUcFG8gFbJBZ2Dkx4epNeNVp/fzo1jVyDdzBhPkbo/RJLL1XCFFNY34u9gxuY8PtlYy7K0VrDiezfeRmdw6wI87hwTy8Ooz1GoMKGQCN/f1ZXdiCX4utpSoNOx8biz9A6VlaXSmkvtWngZg4ay+jAz1oFFv5PGf4iivk4omBLvbs/3ZMZaH9LsjGXxxQPLrNd2QPXwceXRMV97YKkULvDq1ByuicvB3tcPOSsa5/BrsrOTcFx7M2zN6W4ztzgvFPL/hPHNHBJNUpGq1nN32zGicbBVMXny8zXflaKOgUW9kRIi7pf5lvwBnbunnx96kEpLMMye5TCDY3Z7HI7ri42TLweQy0srqmNLHh4o6LXqjifSyOnr6OhHgao+/qy2Z5fXYWsn5KTrX8h04WMu5Z1gQx9MryK9q4L7wYBxtFAwOdkMugwadkZSSWjLL6zmWXoGAgNEkEh7qjruDNfcOC0IQBAqqG1h9IoeKOi3zx4cyPMSd384WWgZykPjiBpOJc/k1eDhYU2l2kQ0OdqVMpaG3nzNB7vakltZiNInojCKNOgPjwrxQNepJL69ncJArffyc0RqM/BCZRb3GwIwBfljJZey/WEqAmx22CrlU6EGA4V3c8HSywSTC6exKcpRqEgtV1GkNWCtkONoopGIb/X3558296Pqnghdag5HP96Wx+mQOH97en/vC/xqwq4mB01GRie3xRXy+P433butr4aoDZJbX4+1sg8EoMu2r45TXafFzseXIKxMstMTL6Zavo0gpqeXtGb35cHcK3k42PDkulMfGdqVEpeGh1WcIcrfndHYlap0RG4WMxbMH4WynYEw3z1YruovFKtadyiOltM5S2q8JQpdVUc/NXx3H0UbBLf18Ka3VWqqf7Xp+LBeLVURnVfLpXQOwtZKIqp/sTeW+8CAm9fJpt+8Go4nItArGhnliayXnm8MZLD6YbmHCf3bXAO4cEsCp7EoeWCXVK/3srgFM6u2Np6MNRTWNTP86ClWjHpkAvzwWjr+rHXf+GE2V+d578aYw9iaVkF4muYWdbRXUagwWMuzp7EqsFDKGh3RcVelS+p+nQm6KldCvc0cEM6Gn91Vfp7xOQ2RaBUOC3Qh0s+PhNWc4n1/DWzN6twFUJRfXUlarYWKv1u/32m8XyK9q4NO7BlhmTyA9yB/vTmFgkCu3DwpAqdZiZyXHydaK9LI6jqSW82REKHUaA462khE+n19NeFePNrNHncHEbd+eIK2sjgBXO168KYwzuVV09XSwlPl7eM0ZItMqmDcymLHdvXh6/Vkm9PDCz9WOg8ll3DrAD1GEtdG5APT1d2aOuQJUsUrDoeQyC4nRSi7QxcPBbMClGWColwPFNY2WGVCTBgW58t7MvhRUNTA42JVAN3tqNXpe3hRPdFYlWoOplS9WIRNwtFUwpbcPDjYKFDKBI2nlKOu0ra4d6uWAl6NNK1rjo2O6EuRmR3JJLe/e1he1zsDjP0nY1mcmdGf1yRySi2sZGOTChQIVZbUaBga5Yi2XoZAL1GsNxBfU4O1kg6+zLQlFKpoeB38XW0aGerDvYikNOiP9A1ywkgtoDSY0eiMavalVLLWDtZyevk74udoxsac3/QNcCHCz43x+NWO7e152FdSoM16RMb2Ryiyv443fE/nHlB4W90dHUtZrUTXqCfV0ICa7igGBLm0Y/yD58eMLagjzdsTbuePKTJX1WnKUagYGuVpWXVkV9fg42+Jovn5sbhXuDtZ087o+dEVRFFl/Op/EQhVjwzy5dYCfxc3729lCUkrqeHN6r1buzbN51WyKzWdCT29L1af0sjr2JZUytIsbY7p7otEbWXIwnSq1jvdn9eWn6DzuGhJwRd/DlehvT4XsBIf9W9UJDrt+6gSH3Rh1gsOuXF3Ea8EPtPcPCEX6Qi8g3RRvmds9gMNIf4RDSMb9RkB8OsFhV9e/EDrBYdejf53gsOvXx/8qcFg7/Wz5XbYHDhtrtlMGJEN/EhhuPiYQWI+0h6kGzgC3tnhPbyReVzFSvtFJIPxK+nvd3DLXok5w2L9fjTojxapGung4oOhkeP9HJAJZ5fV4O9ng3KIIRKf+d2Q0GklMTCQ4OBg3NzdEUaS+vh6FQoG1tTUpKSk4OTkREBCAXC6npqaGvLw8QkJCcHNzQ6vVUlNTg7u7OwqFAqVSSVFREf3790cul18WHNZhKOS/QyEhIfxdi3X8r+nNbVJ8f0KhChfg3vGhLLil93V9j9jcKrydbFrtOfynpNYasLWS/y2LUGSU1TFlyXHuDg/m4zv6/6e706kboLi4OCZPnkx2dnab19555x0MBgMJCQmtaJKffvopP/zwA7Gxse3u1Tg7O7Ny5UqGDh2KIAiXdGdfE59SEIRcQRASBUGIN2eoIgiCuyAIBwVByDD/f/1q312j6rUGahp0HR/4P6pajZ5fT+dbqs272Vvxa0x+u2noURkVPLP+LHG5l62z0kYmk8g9S09x81dto3X+3TKaRPq+u5/X26m/+We1t4KtadCxaE/KZbNBr0RLj2Ux8YtIVka1fsCbNqwzy+rbO61T/wPq0aMHcrmchx56iL1791Jd3ZyMdfDgQe666642mODZs2eTn59PenrbrNn4+Hh0Oh3du3dv89qfdT3gwxNFURwkNu/YvgEcFkUxDMn3/sZ1eI/LSmswEl9Qg7Je26pdFEVqNXoW7UmhsLqBOctPMeaTI6w0pzNLdTQbaNBJSIHXf0vgo93Jl8QZNKlareOxtbHc/WN0G6OwPb6I+1fG8EcHqd3XohylmlylGlEULYbnbF61Ja72UorOlMIfNzwxkl3Pj+X9Wf2o0xq4b0UMH+xs/tw6g4ln1p9jT2Ipq07k/KW+NaV2a/TStfRGExV1rf8uNQ06S8p4exJFkZSSWkwmsV2j25GOppZz27cnLCGiLeFZSUUqMstbv3dmeR1jPz3ayvjqjSYeWHWGZcez+fFYVpvvVqM3klx8+e+76TrLjmWRo1Tz0Z4UtscXEZlWjtZgtNSPTS+va/U5RVHKU9h6rpD3dly84u9AFEX2JJZQfAOIiJ26Ojk7O3PixAkEQeCJJ57Ay8uLmTNnUlZWhlKpxM/Pr805TW0tQWQAtbW1PPDAA7z77ru4uLi0Oe/PuhFumVlIcfEgVSiJRIKL3RAlFNbw/Ibz5FU2YG8t59u5g7mptw8NOgNzV5y2xMwuO9784H64O8VSdLmoupEgdzuylWo8HGxQ1mvp6evM3UMDW72P0WxoFHIZn+xN5bA5ZTtHqSbUy5Hk4lo+2pPMSbMBPZlZSWRaOc9M7E4PHydASvDZcCYfo0kksVDFt/cN/ssJNnUaPfcsjaa6Qc/QLm6cyali7oggNsUWYBKleO+P7+xHqKcUItYUS1xRp2X1yRwcbRQM7eKGtUJmicGPza0mNreayPRy1j48gixlPXUaA/4uthxLr0CjN3YYS92kcy3SxPVGEzO/O0laaS3x7061FEd+ct1ZyXg9M5ogN3u8nGxQNegpqG6gX4AL2+OLeWlTPPcMDSRbqSbA1Y6Ft/fjywNpvDKlp6XeqihKGahqraFVCN7OhGISi1T8cDTT0hbyxm7uHRbEvouleDvZcPvgAMK7uhPq5chDq2Mpqmnkk72p3B/ehUa9kVUnsi2Dw5qTuaw5mcvJNybxx/kixnT3ZM3JHLbHF7N03lCm9WsGPi09lkVxTSNvTu/NT9G5iEB1g56v5wxi+fFsXtwokf6aYp4Bahr03L30FCsfHIabgzVro3N5v0XiXV9/Zyb39sHNwZp6rYHKem27Lq+oDCXPrD8HwMtTehDm7YiDjYKIsMuHYnbq0iqv0/D+jmTendkHb6e/Hr5oMon4d+nO2rVrAUhNTWXevHm89NJLeHp6UlLSFp3S1NYEIgNobGzktttuY+TIkSxYsOCK3vuaNlTNcLBqpL2hZaIoLhcEoUY0Z6QK0h1VLd6gDNWTmUoe/ykOdwdrXr25B8uOZVOp1vHxHf35ITKTCwU1CIKAj5MNxSoND48O4b2ZfZm/Lo79F5sjwhys5fw4bygRYZ5M+yoKgH0vRRCVoWTViRwazbN8jd6IvbWcC4UqJvT0IjKtgo/vkJJP/rEpnm3ni5g7IphxYZ48bX7InG0VRP5zIi52Vjy7/hz7LjZHar42rSfPTJCWV1EZFcTmVuNiZ8XIUHcKqhqY2seXnQnFaPUmRoZ6cDqnkoRCFeti8pjR3489SSWEeDiQo1RjLZdho5BRpzVw55AAnG2t2JdUyuf3DMDbyZY5y0+h1hp5d2YfC5ZAFEW6LtgDwBu39OL7I5kM7+qOi50VB5PL+HL2QOavO8uaR4ajatBzsVjF8zeFtVvB3mQSSSxSsfhgOsfMCSZNGYsA797Wh6l9fXl5U7wlVh3gpl7erHp4OPevjOFkZiXzRgYTlaGkql5HXQs42xu39OKTvalM7ePDY2O70s3bkVnfncTLyYa00jp2PDeGMPMgOv7zo63YItZyGf6utuRWtmWhBLnbUabS8tq0nny4O4Xefs6WWfqMAX5083Lkm8MZAAzr4kbcnxgn7g7WHH55POti8ujm5cjzG85hEsHFzgpVo97yPRx5dTwNWiNLj2cR5u3EsfQKdl4obnWtm/v6MK6HFx/sTEZvNDFjgL/lmCl9fFjx4DBe3HiewynlnH7zplYDmiiK3PVjNOfyaxjT3cMyyQB4ZUoPnr8prM1n71SzzuVX4+dii0wQOJZewehuHgS62VuyXa/2O1xxPJuP9qRw6OXxdPeWJlzfffcdy5Yt47aZM/lpw2/sPRbDgKBm7/Wnn37K999/T15eHoIgoNVqmTlzJp6enqxbt66VG+eGJTEJghAgimKRIAjeSHHuzwM7WhpzQRCqxRuUoZpZXs97Oy6y+N6BeDvZcqGghnuWnUJnMOHlZMNb03szvocXTrYKkoprGRjogiAInMxUcv/K07w0OYz7w7ugNRgJdLMHpCX8q1suMH9cKMuOZxPgaofBZKKyXoeVXIarvRXT+/vxwqQwpiw5RnmdZBi+PZzJHUMC+PiO/phMImujc/FxtuXZX88R4GqHk62C1NI6xvfworC6AV8XW87l1bD0gaFsOJ3PoZQyDH8CLXX1lAz3n3V/eDAf3dEfVYMeJ1sFp3OqsLGSEebtyMd7UtgYW8Cf/6yONgq2PTPaYgCbNHvpKc7kVpGzaDoro3L4aI8ESXp0TFdev6UnQz44yMxBAUSmlVOi0uDrbMuyB4YyINAFndGEzmBi7clcdiYUWzLx+gU4W7Jdv5k7mDUnc1A16AnxdOBIO4UZZvT3Y7cZ/iaXCdgoZCx7YCjJxbV8si8VUZQgWKktXDmvTOnBly1IftZyGS9NCaOnjxOP/dR8L80eFsg7t/bB0UbBp/vSSCisITpLMnwzB/pzMLmMb+YOZkofH55Zf5Y9iaWM6e7B4xGhjDdnr66NzuV8QY0lK9LRRoEAvH1rb17/vTWL3NPRBntrOUU1jbx0UxhDu7jRP9AFp3YGxJ+icwn1cuB8fg0lKo0FMhXm7ciGJ0fi6WjDj5FZfLovFZkAh14ez5QlxzGaRJbcOxBn2/9j77zDo6rSP/65U5NJ770Qeui9SJEiomBDFyu2tf8su5a17a66qy6ra9e1K+LaQWwISK+hl0AKpPc6SSbT6/n9cSdDQkIEDIK7832ePJm599x73zkz99xT3vfzqvlydwV/mNnPl6TimcsGc+24NArqjNS1yqO1veXNbH90xgmPvn5OrTYnKw7WcOGQhC4/V0+q3mij2eykf3zIzxc+BQkhWLgin7c3FROiVaFWKWgyO9CqFIxMjfBFcveKDmLt/VM7RNXuKNZTprdQ3GhmZGo4oYFqFm0t5e7pfRicFIYQgoH3vk99ThZjZ8zl4cvPIcRt4MYF1xKX2hv36KvZ8twtDBt3Dss/fpPw8HCWLVvG7bffzrvvvsuVV16J0+lk3rx5KJVKlixZ0oklf0YiVJEDC14HUoG/CiEWHu/YXxqh2l7VLVayKw1M7RfTbdRfbnUrAxNCOg1XHS4Pk59bR12rnfQoHT/eNxmnW9BgtBMSoCJIq/JFyb27qZgvdldQWG9Co1Tw9V0TGZzUcS7skte3cKDSwJCkMG6elM6lw5OQJIniBpPvRo0M0jClbzT3zOjL1sJG/vrt0biduUMTWDA+jYNVBgI1SvaXt/C3SwYf97MVNZiY8cJGAN64ZiQ7S/R8lFXGNcfxyLA53TjdHkIC1Lg9MqRsW1EjS+6cSGiAmjv/s4cVh+TRxq2Te7HiUC1uj2B4SjhbChuJ0Gl86NdbPMFC2gAAIABJREFUJvXiitHJKCSJWS/JC6qlC+fwzb4q/vDF/k7Xnjkwjg2H63F5BHOGJvDi/GEYbbJ3S1sdd8UwaVOv6CAent0fjUrBq2sLfYklAN66biRKhYJp/WM6QdN+yqllYEIoyRGB2F0eX6PXYnHwzb4qrhqb2qkhbLU5eWVNAYOTQrlsRLJvHvymRbvYcLiBi4cl0ic2mKvGpqDTyLYHdxGt2Z0ajHbqWm30jgnu8P2uzavzPbC0KgWhgWq0KgWVzVYkCUID1MSEaLHYXWx4aFqHiOasIj1Xv7udOUMS0Jvt3H9ef8b2OrVw90aTnZzqVp5bmU9OdStJ4YG8vWAUfeOC0apke3eVNrF0TyVzhyZ2gOSdikx2F3Nf3Uyp3sK8EUnEhwVww8R04kIDsLvk0bTJ7iIpPJDCehNWpxxJ3NUUVG51K8+tysdgdZIaqSMsUM3e8mYMVicVTVauHJ2C0e7E6RYsGJ/G4qxSCupNlOktjEwNZ295C/NGJOEWgq2FelweTycWVJu0KgXJEYHEhGjZcuAIyp0fU5W/D4/djEIbTGDvMURMu5khveKZ1y+ANR+9yKpVq7Db7WRmZvLnP/+ZSy65BICNGzdy7rnnEhgY2KHHvmLFCiZPnnxGIlSbgFuApciLtucBVwshcrs6V0827j2hXaVN7Cpt4uJhib4e/fEkhGB3WTMpETriwzrPyZU2msmraWX24PhOP7rtxXoOVRm4aFgicd5wZCEE24pkTskb6wv59u5zTnqub9m+Sr7cVcni349FCPhqTwVzhyb6MuicjFYequWO/+xBIcHev5xHRZOVi9/Y4hsZJIYF8MrVI4gPDSA5IhBJkrA53Qx+YhWPXDCAWyZnYHe5mfrcBhSSjDYAWDhvCFeNTaW00UxYoLpbUNbslzeRX2vk2cuGcNWYFGa9vInCehMvXTmMy0bIayNOt4cnvsshNVLHBYPjfzU3TCEEFoe7y7D7npLV4eb8lzdRY7Dyz8uHEqhWctene8mIDuKt60Zx9bs7aDTZef+G0cwY2JGlIoTg1sV7WJNXh1Ihs3vund6H+2d1SwQBoKLJwr6KFoYlh/FTTh3/WJGHR0C4Ts3d0/rwxvpCmr2jx4uGJWJzun0JOALVSp6+dDCpUToC1UrUSm+PWK1gZ0kTo9IieGVNAWE6NSNSwtlT1owkwR9n9iMpIpC9ZS38c2U+B6sMPrAZyEDAAfEhLD9Yg8UL3mo/lRakUXLRsEQaTQ4K6o30ig4iv8ZIbauN6GANWpWSVqsTo91Fv7hg+sWFMDotghsmpnf5UMivbaVPTDBPfJfDJzvKiQrSMKVfDDovbmJIUhhalZIfsqtZlVPLkxcPYuGKfMx2Fy1WJ+N7RfHSlcPZW97MxiMNfLajnDlDE5g9OJ4pfWN+MTH1dDXuGcAy71sV8KkQ4hlJkqKAlchh7FnAfGR6JEKIf3R1rrOtcferow55mStt4LQjdUZWHKzl1im9UCkUXZIT2xY729RicaDTqJj10kZK9RY+vWUcE0+QYeJyeyhrspAeFYRSIVHVYsXl9pwVfvS/loQQHUYZu0qbSAoPJDE8kKIGE4X1Js4fFN/lsa02J1/ukh/wz686zNK9lQxOCmVAfChqpURpowWtWkFKhA6z3YXJ7qLV5mRnSRPtZwon9Ynm9qkZjEiNIFirolxvYXNhAztLmvghu8bHDHr/htE8vuyQj9Z4PEUHazHbXVidbpLCA6lrteHyCHQaJRaHm5gQLU9fOpiZA+N4a2MRbo/gzQ1FKCR5PaRfXAhFDSa+3F3JnVN7kxalY1uRnmX7qkiOCGRYSjjbi/SkROqYOTCWq8emEhmkQQh5RBgfFnBSDg02pxuNUvGzDbLHI5CkrqmqPY3Z/lWmZY654BXAbCHELd73C5BDZu/uqry/cf/f0d9/yOX9LSVs/tM0UiK7HxX51fNyuT089X0uOdUGKputCCAmWIvR7sRocxGkkacdg7RKRqZGcPHwRB5ZepDcmlZ++uMUn+fXsWqbJqlqsTIoMQy7y02Z3kKNwUaz2eFb16puseLyCLYWNvLkxYMI0siQvAidmqwiPQcqDWQV65mQEcXNk9J90z1t8ngEHq/XWpuOBa9ZHW4C1Ir/CQ+hs7Jxb+8tgwzROvFEibL84LBTkx8c1nPyg8NOj/zgsBNX2vHwAz0B01EC+5CTeYAMG8pB5rl/gXyTPgo82sMQHz847NTsS8cPDusJ+/zgsJ6z8b8dHNbtdw5c4z3WBNR4j5nk3ZcJfIcMDTMC64GJJ2LvL+65S5J0PzAaCBVCzJUk6UvkZB5PI8+5ZyF70FwjhOiqF/Y/Bw6rarFisDrJTAg906b45ZdfZ1B1dXXU1taSmppKaGgoCoUCg8GAyWQiJiaGvLw8YmJiiIuLQ5Ik9Ho9VVVV9O3bl+Dg4NMHDpMkKRn56fQMcL83aGk68pOoBXgLuAx45ngNO/x64LCqFis2p5u6Vhs3fbiLxTePZVxG1Gm/7rFKf2Q5scCWv8/uMd9jv/zy67clg8FAUlISn376aZf5UBcsWEBKSgo//vhjh+133nknOTk5bNq06fSBw5CHIH9CnncCeR60RQjhEkL8iJwcu1gI8cyxB0qSdJskSbslSdrd0NDwC83oWkUNJh9vxuJwcc7Cdcx4YSP3fb4fu8vDpzvLf+YM3cvjETjdHqwON+1HQC63h4eXZJNf25k90h5ctvFIgy+K8edkd7nZUtDYJeSrvSwOV7f7/fLLr7NDWVlZ2Gw2Lrvssi73r169ustGf/78+WzduhWrtXuG0Ck37pIkzQXqhRB7TuV4IcQ7QojRQojRMTFdrweciNrgSyBzV578LocdxXru+WwfM17YyINfHaC6xcrvFx0dGTQY7QSoFazLr/c1zGvz6ny5D49Vud7C86vyWbqnkvlvZ7E4qxSAWxfv5pyF6xj99Gpu/HAXJm+4fG5NK1/srmDJbhlY5fEIVufWUdViZXvx0dD72z/ew1PfyQOaxVml/O6tbVQ2dw6Rb7U5ueyNbVz3/g4uem0LNqe7UxmQs7QP/9tq1uYdu2bm129Jv3Sq1K/fhvR6PdHR0Z2iTtvUHVjM4/HQ1NQ9sfWXTMvMBm6WJOkW5AUDAbwCREiStAZ5pbiZzqvzPaavdlfw0JJsVtw3mQHxITz9Qx5f7K5g0bZSdF7XqA2HG5j6/HrUSgVXjUnh810VSBK8etUIbvt4D098d4ghSWH85dschqeE8+XtE/h6byVGm4tbp2QA8MraApbuPUoW3FnSRO+YYB88DORe+OAnVnFOnyhmD5a/kPe2lLC1SE9SeABr8uoZkhRGo8mORqXwERhXHKrl75e6+HBrKSWNZi54eTN/v3QwTreHS0ckUaY389dvc8ivbeXWyb14d3MJi7aVctWYFMJ1HQN/dpY04XB5WJNX7wtm0Zvs2FweksIDO5Q9WGng0WXZfHjjWGJCtD38zfh1qjLbXcx4YSO3Tcng5km9Tvp4IQQ2p+eM52T9rUsI0aUr5aEqA7Gh2lOCiB2rqKgoGhsbcTqdqNWdAwy7A4spFAoiIrqnqf+SaZlnkFdtNcDFgMO7rQG5R98Xebqm625mD+i8zDh0GiUXvLKZeW9u44vdFb59d07tzae3jAPA6RYsv3cyT148CI1SwaDEUGYNiuf2KRl8ubuSp5fn0TsmiP0VLVz02hYeW3aQZ37MY8NhufHeW95MZkIoWpWCEanhhGhVPLM8z3etGyemc+VoObn01kI9i71JpwHyalpZkyef52CVgRqDja/vnOjbb3W6WZ5dQ1WLlVmZcaRG6fjDF/t5aEk2n+4o54q3sthWpOeuc/vw2IUDSY/SsXBFPuP/sZafvBCyttXxtvD7HV4ehtHmZOrzGzhn4TpWHur4I/lwWwmHqlr5dr8cUdhkdvDI0mym/2sDtYZfxi/368R1LF56W5Ge2lYbf/shl7yaVl5fV8CjXx/EbP/56TajzckFr2wm84mVbCts7LKMEIIvd1WQXXkU1dBosqM/Bpf9v6xX1xZw8etbaTDaOyRz15vszHtzG5e9sY0aw4lhlXeVNvHKmoIO5wE5inx1YyiSUs3jL3/Q5bEzZ87kq6++6rT9yy+/ZMKECeh03ceJnHLPXQhRg+y2A2BFduNJQnZLHChJUiGQh+zPfVoUrtNw48R0/r2hCI9H8OCsfpzbP5Z/rMjj2vFphASoGJ4SznXj0+gVLUcz3jO9D71i5Nc3ndOLdzcXY3d5eGH+cL7bX80HW0voHROE0y1Hww1NDqek0czDswcwqU80MSFanluZz9deXvvmP00jOSIQh9vD7MHx3Pbxbl8ShqN2qnnv+tFc8VYW5w+K68CfSYkM5NkVeThcHi4ZnkRmYijXvbeDqhYrT3yXg1IhseSOCYxOl3kgCy8fyo7iJr7dX8Wr6woI0qr4cGuJD08LUNxopqDOyJ6yZt9U0fcHanwjCrPdxUovL+bp5Xks3VtFrcFKs5eV8emOMu6f1Z8yvZnE8EAUkoTebD9ub8Xh8qBWSmdl0IjHI35xiHdPqNZgI0CtIEirorLZSq/oILIrW7j2vR3cMimDoclhfLy9zAdWCwtUc8nrW3F411jsLjcPzurPcyvzcQv40/n9OwWBfXeg2gdXu+a9HcwZksBD5/cn3fvbz65s4Z1NxfyQXYNOo+TTW8ejVSm44JXNpEQGsvlP03/FGvHmW7C6fAjnMyl5araeuNAAXltXgNMtGPPMGkanRfD+jWMIC1TzyY5yHC4PLRYHM1/YyLkDYvnXFcNQKOCbfVUYbS5K9WaeuGgQaqWMWZj/dhYAGpWC9CgdI1IjyK9t5Y9fyG750VMX8PY//szEvnHMmjULtVrNmjVrWL9+PU888QRjxozh8ccf54EHHkCtVrNo0SIWL17MTz/99LOfqUeCmCRJSgc2ITvpl4tfCfkLcjhvq9XZLZukO/3fJ3upbbWx5I4JCCFnx+kTK2NeX11XwFMXD+Kv3+bwxW3jfZ41BypaeHhpNglhAXx409gO53vyuxw2HK7n/ln9MdlczBmagN3pJjY0gB3FeoalhBOgVrKloBGFQgY7vbZO5o5ve2Q6ieGBCCG49/P9fH+gmntn9OX+8/p1srsNJQogSTA8JZx95S3MG5nEhsMNqBQSwVoVCoXEmPRIPttZzs3n9MJkd7KnrJmiBjMLxqeRVawnOlhDhE7D3dP78K9Vh9lb3kKf2GD2lDVz0znpWB1uvtlfxc3n9GJEagTnZR7ll+hNdma8uJE7p/bm9qm9AXlRV6s6fmq7PWVNfLK9nBGp4SyYkI4Qgiazg6jgnp0eMtldXPTaFqb1j+Wh8/uztbCRFqsTnUZJdqWBqCANTRYHLreHqhYrt07OoE9ssEx9lGQOy4bD9TRbnHg8gouGJbL8YA1VzVaSIgJZcbCG2NAArh6bwtDkcFxuj484mVfTyic7yjkvM47iBhMbjjSgVsjQr0aTnan9Ythb1ozJ4UIIUEgQE6KlrtXOBYPjefrSwfzl20MUN5gZmhzGl7srSQgLoMXiRKmQiAzS8ML8YVQ1WxmeEs7La47wzf5qBsSH8H/T+vDEdzk43R6ig7V8e/c5rDpUy9++z8UjBHOHJrK1qJHK5o69z+X3TmJgfCjFjSaqWmyMTY+k1eZEq1KQV2Okf3wIu0ub6B8fgt3loU9M8Ck/OIsbTNz1yV7ya41cOjyRF+cP/1UfwkII3ttcwopDNbx85Qg2HqnnL9/moJBkLs6lI5Koa7WzNr+Oe6f3JTpEy1++OcS0/jHcMbU3f1qaTZnewrDkMBxu0SGZy4Oz+nH12FRu/mg3dQYbIQGqDh0+lUKib1wI714/irBANd8t/ZKXXnrJl0911KhRPP7440ycOJFDhw7xyCOPsGnTJjweD6NHj+bpp59m0qRJwGmOUJUkKRjYiOzu+HV7nrt3/2lD/vaEXG4PHkEnPsqROqOPbJgcEcjaB6Z2CoXuCVW3WHls2UEuGZ7og2CBDG1acaiG30/K6LKRrDfauPqd7VwxKoULBseTHh1ERZOFmBAt5U0Wrnl3B61WJ+/fOBqdRsXlb27rdI6Sf1zYqbddUGfkwSXZGL0PzD3H8MsBAtQKooK0XD4qmUNVBl9vc0B8CH+7ZDD3fLaX+NAAHpgl9y7rW23EhQYQEaThxZ8O89nOCl+PNCZEy4D4ELYWNvKXuZlE6DQYbU6+P1DDFaOTSQgLYFKfk0s2UVBn5Ot9Vaw8VOtDJseHBnTJOpEkUEgSCkmevgOIDdH6mCNV7bIaqRRSByxzfGgAZrsLu9tDepQOjUrhQx0D9I4JoqjBTGyIlqvGpGB3eSjVm9le3ITB6mRsr0ievGgQn+4sw+0RPDJ7IHVGG9HBWiLbdVaKG0xM95I+/37JINKjg1jw/s4On0GrUnBuv1iuG5/mozGuzq3j1sW7USslnG5B/7gQFt08hoSwQPJrW3n6hzzOy4xjWEo489/Ook9MMCWNZqzeBfu2z9t2/LFKi9IxKi2Ccb0iuWJUCkqFjNNuMNq5dEQSIE/3lenNjEg92gQcqTNy3Xs7cLo9jEmP5KfcOn43Kplz+8cSrlMzKi0CrUrBwSoDR+pMDE8Jp09s8HHnwQFW5dRS3WLl6i6Inm3KrW7l/S0lBGmVhAeqeXVdISovYtrscNM7JojyJgv/+t0wLhku23/l21nUG+2Y7C56RQfx0U1jfesZDy/J5ovdFfSJDea+GX3pHRPMfZ/vo6DehEICj4AXfjeMmQPjWJtfx9r8epZn15AUHsjKP0zuEVzy6eS5q4EfgFVCiBe92w4D5wohaiRJSgA2CCG6nZo5W9ky720uZnFWGf/63bBTxqSeKdUabBisRznYQsh0wDK9maoWK/fN6OvraR9Plc0Wrv9gJ7EhWi4eliT3yNVKKpss5Na0srlAntc9t38M9a12cr29l2MbwTYFa1XYnG4u9E4XXPXOdpotDiwONyEBKoy2o/PK7Redh6WEc97AWDwCthU14hEwKzOO2NAAWiwO9pY1U2+0c06faGoMVj7bWYFCkq93XmYcEToNO0qauG1KBpkJoTRbHKRFBWGyuQgLVOPwpgK87v0dTB8Qi8d7TxgsTmYMjGNsrwiO1JnYU9bMlH4xJIUHsmxfJbdN6Y3HI3jmxzzK9Rb2VTTz14sGERUkj4Qm9I7CZHcRpFF2aJQcLg91rbaTYutkV7b4UMuSJPHG+kK0KgVqpYLl2TX8/dLBnZjnQggeXpqNEDB/TAqj0yKO2zh+sKWEv/2Qy4jUcC4Zlkh6dBBZxXp0ahU51QYm9I7CaHMxMjWC7cV6wnVqNh5p4HCtkXqjnd4xQbg9grImC0LAFaOSSY/S8e7mEgxWJzdOTKfJ7GBrYSN6s4NwnZovb59Av7gQ/rEij7c3Hs2UlhQe6IOAtf2exvaKZHdZM31jg33fwbr8elosDib0juKN9UW+smrvuprV6abV5qR/XCitVic7S5sIVCt9D6+LhiXyf9N6s2irnHvhznN7IwQdFqMXbS3hSW9WrEU3jeHc/rEd6vfYxeucagM7ipvYXdbEhIwoFkxI9+1zuj0szirjwiHxJIR1dHA4VZ0uKqSEnEavSQjxh3bbnwf0QoiFkiQ9AkQKIf7U3bnO1sb9v01CCBxuDxJSj8yRN5rsNJkdvuF5Yb3Rl+zCYHUiIVFjsMlpDBvM7CxtYv7oFKb2k11fbU43kgS7S5sZkRrO4VojIQFqXB4PCWGBPrjVq2sLfFMIAxNCaTY7OvTCI3RqEsICya1pRaWQuHJMCg/M6t+h93ui9fNL6sTucp+W0d2vISEE24ubGJYS5uPRn+hxP2TX8N7mYhLCAukVE0SLxcF3+6sxO9yM7RVJhE7Nqpw6ooI0TO0fQ9/YEOaPTu4wDVemN2N3eciraeWxrw+iUir4v2m9mdY/lg+2lnCgwsCgxFDKmizsLWvG5REkhQcSpFVypM7EsJRw7p3eh33lLZjsLvZVtGB3ukkMD6TGYEMC5g5L4NqxaRQ1mmixOJjcN+ZnqZAGq5OFK/LoHRPMzef0OivWb9rrdDXuk5DZCgc5GsT0GLAD+BI5SUcZMF8I0a1DpiRJDd6yJyM/OOzU5AeH9Zz84LDTIz847MSVdjz8wGmH7ZxGiI8fHHZq9qXjB4f1hH1+cFjP2fibAocBpcgegm7kzuUXQDByQy6AD475zpd5t+d5t98A7EF+qFYCzwGqbq4rkB9kJu/feydi72lB/p6s/tfAYX759VuWweqkvMlC39gQAtQKPEKgOAvdYE+XDh48SFpaGqGhoTgcDgoKCggLC8NsNuN0OgkLCyMlRY57cblc5OTIg8+MjAxCQkJoaGggICCAoKAgXC4XRUVFREREEB/fdbKVPXv2MGjQIAICOrsidwcOO9knVwoycjIXeQh3XxdlzkXGU+73/v315847atQo4ZdffnWvJpNdeDyeM3Jtl9sjthc1ipIGkzj/pY0i7eEfxBe7yoXH4xHjn10j3tlYdNLnPFzbKiqbLafB2tOrtLQ0sXr1at/7Bx98UMyZM0dMnTpVPPXUUyIpKUm4XC4hhBCvvfaauOOOO0RSUpJYv359l+d74YUXxNy5c497PUAUFBQcb99ucZx29WQjVF3AA0KITOSh5f9JkpTZRbnNQojh3r+/neQ1/PLLr2O08lAtI/6+mke/PoinC0+krlTZbGFPWVOH8kUNJooaTN0c1VFVLVYe/OoAT36Xw5XvbGf6Cxt8gVKljWaMdhc1BhtH6own94GAua9u4ZyF63zuqr9FVVRU8OOPPzJixAgAEhMTyczM9AUZLV68mOuvv77bc2zatIlBgwZ1W2bKlCnEx8czb948SktLT8i2k2rchRA1Qoi93tdG5AjUpJM5h1+nT3aXmw+3llDR1Bk+5tfZJY9H4DoO4bOu1cajXx+k1mCjpNHMgYoW/vyNvPb++a4K3tlczCWvb+H1dQW+Y/6zvYy7P91LVpGeF1cfYX9FC1e9s53L38ziuVVykjMhBLNf3sSMFzbSYDwx3MAtH+1myZ5KPt5eRlJ4IAlhgWQmhKJRKiioN1HfKp+n/gTP1ya9ye6LdXjoqwMn/MA6W3TppZcSHh7OpEmTmDp1Ko899phv3/XXX8/ixYvJz8+npaWFCRMmHPc8H3zwAbt37+bBBx88bpmNGzdSWlpKfn4+iYmJzJ07F5fr53EUv4QKmQ6MQPaOOVYTJEk6IEnSCkmSunwk/RrI33qjDYOl64XpE0XtttfOkiYWbS3BYHFSpjfz8pojbDrS0fb9FS0+bofHI7q9iQrqjEz/14ZO5ziWN9KdXG4PpY1mhBDc+9k+nvo+l9kvb+KQF0dgdbipaLK0TZmdFq3KqT0r2SQejzitn/tU5fEIbly0i8vf3NYJ4ezxCO7+dC+f7Sxn/D/WMu1fG7jkja0yMuIPk5k5MJaFK/I5UGngXz8dQQiB2e7i2R/z+CG7hhs+3Mmrawu49I2tPvfRJXsqcLk95NUYfcFIv/9o18/eA3vKmjtEXl41JoWtj0znx/smM2NgLEX1Jt/v+0QfFm3K9v4+Lx+ZzO6yZn481BmQBbJv+PHuh0aTnQXv76BMf3p6/m0JuatbOnNkvvnmG1paWigrK+Pf//43gYFH/dbnzZvHunXreP3111mwYMFxz//NN9/w6KOPsmLFCqKjj58sfsqUKWg0GsLDw3nllVcoKSkhLy/vuOXbdEpsGW9U6lLgD0KIY6Hle5Hdc0ySJF2InJWp77HnEEK8A7wDsp/7qdhR1WJlye5K5g5LoHdMcId9JruLOa9uwWB18tL84cwZKnNV7C43T/+Qx8fby7hhQhq3T+1Nqd5MhE7DwHaZkfQmOzqNyhegcKCihavf3Y7bI8gq1mN3edhwuIG4UC3bH52BJEkUNZi49I2tAOT/fTZ3/mcPG440MCo1gv7xIfxhZj+igjS8v6WEQ9UG9pQ1U9ls5fX1hQxPDUdvcvDDgWr+vaGI+aOTuXt6X15fV8Da/HpmDozj2nGpvL+lhNpWG89eNoTE8ED+/kMuH2WVMa1/DOsPN3DH1N58u7+Kuz/dyytXjeD6D3ZisDp57eoRXDQssUMdOVyeTpG53en5Vfnk1xi5a1ofRqXJEYcljWZu/3gPV45O4Z9XDO10jBDCG+X4S1MHnJw8HsHc17YwID6EF68c/qtd1+n24HKLDoEtQggqm60oFRLLs2tYk1fHjhLZO+65lfk8duFAn3/9V3sq2FV6NCr4d6OSSY8OYlRaBAPiQ3npyuHc9/l+X1TwzBc3MrVfLBaHm0GJoeRUt6JRKvjjef0QCNKjgrjrk71sL27ip9xaFJLMJ3p4aTYfbSvl3hl9j8vfeWdTEWGBajITQskq1jMy7WiUad/YYFbl1PoQ1fVGO4X1Rt99+HPxAvvLW5AkeOLiTHaW6lmcVcbcoYmdyi14fwetVhc/3je5075v9lWxuaCRpXuruP+8fggh+GxnBXvKmnnkggG/mHa6ZE8F/1yZT2G9iRfmDzvh43Q6HRdccAFvvvkmRUVFXZZZuXIlt956K8uXL2fIkCEnZZckSSfUaTnpxt0blboU+EQI8fWx+9s39kKIHyVJ+rckSdFCiK4xdb9Au0ubeHntEV5dV8DjFw70IVINVifPLs+jwWhHpZC457O9hAWOI1Cj4Knvc8muNDC2VyQfZZXx+a4KXB6BQoKHZw/g+gnp2Fxuzn95M2N7RfDva0dRY7By1yd7iQnWcv6gOD7Kkl3yE8ICqDHYyKluZXBSGE9+d9Qle+GKfNYfbmDOkASqWqx8tbuSgjoToYEq1uTVo1JIhOs0nNMniq2FeoY++RMBagU2p4eoIA0fZZXx8fYyJElibHoki7aVsmhbKSqFhEalYM6rm7lkeJLPlvWHG8iIDuLBWf04p08UC97fyeVvbiM6WIvB6uT/OlWGAAAfLklEQVSez/bx1Z5KxqRFEB6kYWtBI2vz63jkgoHMH51Mi8XJwpX5zB4UT6PJjtnu4pLhSfyUW0dudWuHKMA95c38cM8kkiN0rPKSKb/PrubPcwfy0bZSqlqs3DG1N/d+vh+Hy0OT2c7SOyeSHNF9RKbZ7sIjRJdh2UIIalttvsg+IQRbC/WMSA3nh+xq3t1cwtCkMJ6dNwSH28OrawrIrWklt6aVOqONGyakkxqlo7TRzKzMeAxWJyEBKlRKBSWNZt5YX8jYXpFMyIgiJVJHXk0rNqdbZsZ4PORUtxITrGVtXh0T+0TTL65jNKjB4qSqxcqjX2ejNzv49JbxVDZbGJQYxgNf7feRQQH6xQVz/3n9qG218e7mEkoaLcSGanG4PHx/oJqxvSJ59aoRLN1byS2Te3UIjAoJUPPBjWOoN9qYtHA9RQ1mihpKGJseyR3nZnDzot3MGZrAnefK0cdWh5voYC3XvS8PsK8dl8r80Sl8sauCVTm11BhsZBU18uxlQ+gXH8I7m4ox2pwMTAhlVU4d987oS0JYALk1rQxLOYqIGpAQikfAVi99stFkZ+aLm+gTG0yLxcFfLxrExcd0JqwON29tLMLicPH+Fvn7Cg1Qc924NP6xIp/DtcYOUbZbChp9+Q9yq1vJTOyYlvL7A9UArMuv4/7z+rG5oJHHlh0EID1Kxz0zjvYp7S43ByoMDE8J79ChWZdfx8pDtdw2JYM+sUevXdVi5V8/HQGguNFEk9lBrcFGZmIoHiFYureSURMcPqZV3TFoi2effZYbb7qZrrwA161bx7XXXsuyZcsYO3Zsp/3tlZOTg9PpZMiQIVitVv785z+TlJTEwIEDuz0OTjKIyRuVuhoYieyY/54QYuExZVKRfX1HATYgAkgW3Vzol0So1rfaePybQ6zOrWPeiCRya1o5XGdECLhlUi/un9WPOa9uoaTRjEohEROi5fE5A5k7NJHCeiN/+EJugNKiglidW0dogIqQALWPKfK7UcmsOFSLRwg+v208/eNDeHhJNuvy6/n01vFc9PoWLhySQGZCKM+vOsztUzJ4Z3MxQkBGdBBrH5iKJEkszirlr9/moFZK/HlOJhcPS0ShkGi1OnloyQEC1EoajHbuP68fE3pHsTavnjV5ddx1bh/6x4ewt7yZw7VGJvWJxun28PDSbPaUNZMeFcQHN46husVKSqTOF9L++0W72FfRwpe3T+CLXeW8u7mkQ72FaFX0iw9hT1kzSoXUCUnaXm37M6KDeHvBKC59YytjekXy/g1juPj1LdS12mg0Obh9akaHMHKQ6YYGq5NwnRq3d0rgjnN7s7mgAbPdzd8uGUTv2GBWHqrl5dVHaLE6uXJMCvGhASyYkIZOo2LFwRp+OFjD8uwaXr9mBHOGJLBwRT5vbzp6rQHxIRyuMzI8JZwGo53KZiuSBO1/dW2h523Ml5AAFfGhAZTqzbg8wlc2MyHUh1JIj9Jhdrg7TTsMSQojKlhDrcGGUiGRU310ANuexdL2+r4ZfVEpJCb0jvIRPoUQvLWxmOdX5RMSoEarUjA0OZx/Xj7khCBq9UYbdqeHTQUNXDEqGY8Hrn53Ow/O6u/jy4BMi7z3s33Myozj1atHEKBW8s6mIp79MR/Ax0HRqBS43B7USgV2l4dhKeF8eft4NN737ZktZXozU5/fQLhOTUsXU58apYIXrxzGqpw6nC4Pd0/vw7ubi/l2v9wgzxmawJMXDSImREuT2SFPQfWPIT06iMSwQKb1j2X+21mYHS6MNhdXjErm6rEpFDeYsTjcaFQKHv36IKmROsqbLHx39zk89FU2JruL6BAtVoeLlfdNweJ0k13ZwuJtZazMqSUtSsczlw6hwWRjaHI4v3sriyazg8ggDUvvnEh8aAD3fLaXNXn1aJQKJvaJYnNBI+lROsr0Fq4Zl8pzN80kbNY9TJ46jbcXjGLRtlJeW1eI+OFJ/nDHzfzx7jv5IbuaB786wONzMrluXCphMQkseOR53nhwAdOmTWPz5s1otAGyV4skMWXKZFasWAHABRdcwOTJk3nsscdYt24dd955J5WVlQQFBTFx4kSef/55+vaVH1w9FqEqSdIUZEjYYeRIrH7AH5ADJRBCvCVJ0hfAeUAFckRZmRBiZnfn/aX4AYvDxWVvbKOqxcrItAhGp0UwuW+0D1a0raiRx5cdYlRaBH+9KJPQdj1Dj0f44EgbDjfw/YFqCupNTO0Xw1d7KqhrtTNzYByPXjigw9SP2yNQKqQOXIxxvSJZdNNYXlpzhHc2FfPoBQN8/Ban28NrawuYNiC2A0Tpl6jNhq5kd7lxugXBWhW1BhtvrC/k3hl9CdaqaDTZiQnRolEq+GBrCaV6M3qTg0uGJxGoUaJSSJjtLqpbrEzqG4PZ7mLTkQauHZ9GZJCGD7eW8NT3ub7G8rkrhrLyUK1vqqBtiui+GX3543n9OFhp4IOtJWhVCnKqWzlYZSBQrSQkQEWDyU6QRoXJ7iIhLIDR6ZH8kF2NEDIMq1d0kM87A2TQ2MjUcFbl1DEsJZwDFS1cPCyR538n2/DgVwfIiA7m2XmD6RUdzMi/rwbghglplOgtzMqM480NRYxKiyA0UEWj0UFsqJa7zu3D/opmthQ2sjq3jhsmphMXEsDSvZWEBaqZMzSBrYV6AtVKVuXUolRI1LbaGJIUhkohMalPNCmROrQqBSmROrYUNhIWqGZfeTNzhyYypd/xs43ZnG60KsVpRSbXt9qICdH6rtFgtPPEd4fIiA7myjEpLNtXxStrC7hvRl/mjUyiqMHMuF6Rx4VweTyCYU/9hPEYzvzQ5DDeuGYkV72znaoWawdGEMjfw8Q+0cwcGNfht3v/l/v5em9Vh46GTqPkqzsmsGxvFe9t6dg5ARlgt/K+Kcx8cSMuj0ClkHjvhtHUGOQF6ZAAlXc0KJef3Dfax0Nqk0KCF+cP5/FlBzE73Og0SiwONzdMSGP6wDi0KgVXvbO9wzFDksKY2i+GtzcV4fYIPAL6x8mdC5A7BKV6S4drtNmgUkh4hKB9X+rOc3vz8OwBXdbzz6knG/cJwJNCiPO97x8FEEL8o12ZVd4yWZIkqZAjM2NOV8+9TW0/iOM1dqcim9ON2e762V5UhReWlBp1dNqhtNFMaqTurGNR9ISEEHyyo5wPtpbQLzaEN68bSanewourj9AnJpj7ZvalyewgQqfu1GAZrE42HK5nfEYUOo2SRVtLKWuycNWYFIalhKNWKmi1OXl/cwmvry8k3UsefPLiQRQ3mHloSTb1rTYuH5XMI7MHUGe0ER8a4LuO0eb0IXsBPtlRxrDk8A4M/Z6Q2yMw2WXw2H+LDBbnSbHV57+dxc6So2SRjOgg1j14LiBP07y7uZjfjUrB4nBxoNLAOb2jyDhmbaxNzWYHe8qaGZcRyaGqVr7aU8HN5/RicFIYbo/grY1FJEcEMixZRmYv2lbKiNRwzh8Uz783FPJxVhkLLx/K1H4xCCH4PruGXSVNhOvUjE6PJDkikN4xwazLr6Oq2cqgpDDW5NYxfUAso9MjKdObWZ1bx5E6I5ePTPbhvQE2FzRQqrcQFaTB5nQzb6RMb82pNvD9gRoGJoRw0dBEthQ2kl3ZwsEqA4MTw7hsZBLvbiqm2eIkMkhDjcGKSqkgIzqIcJ2G1EgdaVE6wgPVxIaeWmannmzcrwBmCyFu8b5fAIwTQtzdrswhb5lK7/sib5nGY87VIzx3v/57ZXW4/enizmJ9u7+K+z7f7+sRP3PZYK4dl3ZGbBHil0HffqvqrnH/JTlUf5Hae8tIktQgSZIfHPbryA8O6zn5wWEcJf5d90+4rmfs9YPDTlzHf5oeL3S1/R8yKOcgcAQweLdFIld0I/Iia4R3+ypkKmQhMtSrGe8IoSf/8IPDTtW+dPzgsJ6wzw8O6zkbf1PgsC7sbF+XLwMLz+R33vZ3QtMykiSVAqOBFuQGfoa3gq8FZgIXITfuD0uS9G/vB04DHgf+KISI6uq8bfKDw/zy6+SUX2skNEBFYnjPJH3w67ep7sBhJzUtI4RwSZJ0N3LvPB14QQiRI0nS74H5wMPIvehq5F59E2CQJClByAm1u1R6ejr+ZB1++XViKqw3MfPFjWTEBLHugXO7LONye1ApFWd18nK/frm6m84+0bBBAfwkSdIeZJ/1foBFCPGod/8DyDxjkOfJHhRC9BFCjAVK6II/82vgB/zy679NNqebld5Q/eIGM01mR6cyy7NryPzrKj7eXsbQp1bx8pqCTmX8+u/XiTbuk4QQI4ELkEmQU9rvFPLczkkhBIQQ7wghRgshRsfEHN8H2C+//JJRETnVBma+uNEXOQmwt4sE5p/uLMPh9vCXbw5hc3r48eBxB80/K7dHsLWwkfbTtzUGKw8vySa3+ljyiOz//uR3OSza2tkvvU051QYWZ5WyOKuUJ7491Cm606+e0QlNywghqrz/6yVJWgaMBeraplu8ibDb4qurkLnvbUr2bvPLL79OQWvz6rj3s32YHW4SwgK4bUoGKZE6nlmey8YjDczMjPOVtThc7Cpt5nejkrloWCKf7ChjR0mTvMB2ClMzS/dU8qel2TxxUSbT+seiVStYuCKfb/dX8312Nbsen0mQ9mgzsjhLxmQAXDYiuZPf/LaiRq55tyNrsMXq5OUrh/unjnpYP9tzlyQpSJKkkLbXwCxk167vkNNF4f3/rff1d8D1kqzxyN41p9518Muv/0HZnG4Avtxdwa2Ld5MaFcTsQfF8/PuxPHbhQBaMT2Na/1hWHKrtgI74z/YyHC4Pl49KZkq/GM7pE02LxelLKN5qc/LZznK2HdMbP57WH5b7bC+tPsLsVzYx59UtfLu/moEJoVgcbrIrDb6yQggWZ5UR7G3sP9tVzle7K5j72mYajHaufmc717y7Qw7uk+QI5PMHxfHt/mqGPvUThfWdmfANRjvfH6imxtCZzFiut3D5m9vYVXo0kOqr3RXc/+V+6o3+0cCJ9NzjgGXep6oK+FQIsVKSpF3Al97F1DLkBVWAH4ELkV0hLcBNPW51D8lsd6E3OTpElp5uCSE4VNVKbKiWuFOMSvPrv1vbChv5/Ue7uX5iGh9sKWFi72jeXjCqQw8Z4MIhCaw4VMtzK/OxOt3MGBjHi6uPMHNgHON6yfyaAfEybCuvppXIIA3z38ry4RyevWwI14xL7dIGm1NGRW860sD4jEgUkoTd5eFgpQzf+ve1I5m4cB37KpqZ0Ft2hjtSZ6K40czTlw5meXYNC1fkE6yV0RJjnlmDUiHx4Kx+3DAxnaIGM01mO5FBWlbl1GG0uXjs60O8ce1IH83RbHdxxVvbKNNbGJEaztd3TsTicPvq4aU1R9hT1szNi3aR9egMdpU08dCSbADSIoO4b2ZHGO3r6wrYVqTnrQWjCNGqaDQ5WJ5dzeaCRjITQ7llcoYv4rjZ7CBIqzouNdXmdB8XzXC26LTlUJUkaTbwCqCkC8BYe50qfsBsd7G1sJHhKeEgQWzI0cbS6nBz44c7SQwP5MmLBxEWqEYIgdXpZnVuHWV6C5/tLKfRZOejm8aSmRhKWGDncPk2eTyCBpOdZosDs91FdLCWsEA1Oo0Kh9uDEIJag42QADXxYbIdJY1m3txQiN3lweJwM3NgLAerDPxnezlRQRo2PzyN/RUtLFyRz0tXDic5QnZr0ygVVDZbfRCwY9XdEDu/tpX0qCAsDjeRXmKdX2dexQ0magw2DlUZWJVTS1KEjsJ6E4MTQ3no/P6EBqpZtq8Kp9vDom2lFDfI8TlJ4YEsv3cS4brO36XN6WbSP9fT2I6lHxeq5ft7JvnuBZPdxbhn1hAXGkDfuGBW5dTx+jUjWLytjOJGM/fN7IvZ7mJSn2gGJ4XRZHbw2roCluypxGhzEaRR8vltExiSLOMbKposRAdrCdQomfavDagUEn+em0l8aAD/WJHH5oJGsh6dTnaFgVsW7/bZVNdq57krhjJ/dEqnz1HRZCGrSM+jyw6iUSoYkhzG+IwovttfRVmThQkZUWwr0pMWpaOy2crUfjE0WxzsK29hZGo4e8tbeOj8/nyxqwKVQiIiSEOz2cH390ziQGULn++sYF9FMxVNcu+/V3QQRpuTRpPD975Ub2Z0WgSf3zaBp5fn8uHWUmJDtGjVCq4bl8ZtUzJwewTNFicPfHWALQUNPDx7ALdOzkChkKgxWIkNCeiEPynTm0kKD0R1HOT1hsP1DEwIPeWOXo/hB07igkpkf/jzkAM5dgFXCyFyuyp/qo37F7vKeXipjPgMDVDx2IUDMdpc5Na0srmgwfflSRIsGJ/G7tJmH+0P5C+1fYqvjOggBieFkRQRSHGDicO1Ru6b2ZcQrZpnfszrMh3YseRBjVLBnef2ZnVuHbk1rQRrVQSoFT5bANK8hLljFaCWfwApEToK6k08PHsAGTFB5Fa3YnO52VfegtXhprrFSmxoALdM6oVSIbG/ooXescGUNZp5b0sJIVr5gfPWdaMQCJZn17JgQhrDksP4eHsZOo0Km9NNk9nBNeNSMdpcfLOvCrPdRe/YYMIC1QSqlVQbrIzrFUVCWAAtVicJoQHUGW3oTQ4+31WO2e4mPSqI3rFBnNM7moggDUIIdpTIqd1abU6W7Kmk1ebiL3MyfQ3EsXK5PRTUmzDZXSRHBPqwvj8nh8uDxeHC4fLQanNS12pnQHwIkUEa9GYHAWqlL5vRmPQIqltsbDhST/+4EKb1j0WhkGg02dlX3sKOYj3p0UHMG5mESqFge7GeBqOd8b2jiA8NoMnsIDpYg93lQaWQjnuz7iptotZgY3hKOHvLmwnWqiisN/Gvnw77SJHJEYFYHG4GJ4Wxo1jvRRwL328kUK3kT7P7k1vdyv2z+nVbH+9sKuKfKw+zcN4QzHYX0wbEkhYV1KHMR9tKeeK7HJQKiYdn9+e2Kb3ZX9HCte9ux+xw+357r1w1grc3FpFdaeDCIQmMz4hict/o43YyHv36IJ/tLO+wrQ1BIIRgVU6d3PECmsyOTsjeY1XcYOKN9UUcqGyhsN5ERkwQf5mTyYTeUVzz7nYaTQ4yYoLIrzGSFBHI+IxI7p3Rl3n/3kZOdSsqhcRnt42nosnC/V8eDVgNC1QzuW80o9MiSAwP5L0tJUQFaRjbK5JBiWGMSY9g6d4qHvzqAEnhgVS1WLloWCKNRjt6s50jdSZGpoZT0Wz1YcRHp0ewvbiJzIRQpvaP4a2NRaRE6MhMCOWJizNJCAvkx4M13PXJXsJ1ai4YnIBKIREXqmVHSROSJNFicZBdaeDacak8c9nJMd3bdCYa958FjLXXqTbuLreH1bl1rM6t4+t9R9dsQwJUTOsfy3mZcUQHa/liVznf7K8mNkTLVWNSGJEawdhekQR5CYmrcmpptbrYVtRIUb2JOqOdlIhAJEnyNei9Y4JYMD6NmJAAdBolerODRpMdm1MmyQHEhQbw+c4Ksor1MuQoJZw/zuxLn9gQrA43L/x0mJRIHdeMS+X693dS3mTh8pFJVDZb+XpfFZeNSCIsUM3e8uYOc5lyHcLQ5HAidGqCtCoOVLT4Mu1olApfyrJz+kRR2mjxIYvbKyRAhdHWkeIXqFbidHvwCIFGJfPk20shgUohn7894U+nURIeqKam1YYQMu0uMTwQp9tDjeHofGdMiBYJ+ebuHx+Cw+UhJkRLbasNs92FSqHA7HD5sLEKCXQaFcFaFeMzIrE43L66NtpcpETq6BsbjMvtYcWhWuzHZOnRqBSEaFXozY5uUcZKhYROrcTuzfTTVlanUaKUJB/tUKWQiArWUNdqJzRAhcXbGCZHBJISqZOvL6CsyYzR5vLtP1YzBsTy+0m9CNPJyS/aRl451QYWrsgnNEDNgglpCCHnCUiPDuryPMfK45E5990FMwkh2FveQnqUrgMEz+5yozc5UEgSN3ywk8N1RiQJXr96pC+5TXdyuDwcqGzB6fZQ0mhmRErEzzbgJyKX28OavHom9Y32zd93p80FDXy+q4IrRiUzrX8sQgh+yq0jp7qVIUlhjM+I7DJHQHsJIVi6t4p1+XWkROh4YFZ/NCoFHo/grk/2sjKnlmHJYfSPD2H6gDhmZcbxfXY1z686TGWzlTHpEeg0KnaXNuEWglmZ8azPr8dodzE+I5KcqlYkCVptLtKjdASolYTr1AxNDuf+8/qd8hTPmWjcTwQw1qPgsJ0lTdicboanhhPSjgrYpiazg7BA9QlRI9umPRpNdp5bmc/otEguG5l0QtmEhBBUNFmJDdV2+4W1NShKhYTLe3P0bZcAwmR3sSa3jqhgDeN6RaFSSB0Ikx6P4Ei9EZPNxYjUCGpbbUjgu8kbTXa2FemJ0KnpExvM13urqGu1kREdRHCAmr6xwQRpZbqeVqXk9ikZRAdrqWqxYnbIjZROo+THg7XYXW4idBqazA5SI3W4PYK5QxOICtZic7rJrzWyOreWiiYraqWCIUmhpETqCNaqGJkWgcXu5vmf8qlusaFSSNQb7SSEBRAaoPYlSpnYJ4qoIC27y5ox2pzUGmzsKWsmXKcmOlhLVLCWYK2S8iYLhfUm3B6YPiCGAfGhqL0NemSQhg2HG3zJJvRmO2GBagYnhbGtUE9qlI5JfaL5Zn8VRpsLq8ONQpK4cEg8/eJDOFJr5PsD1Tg9gun9Y0mJ1PHt/iqO1JkYkx5BeZOFkAA1CgnKmiyU6y2+31NqpI64UC2J4YEMSgyjoN7IwIRQJECtVPQ4lbKnZba7WJxVxqQ+0ccdYf2vyuHycKTOyKDE0E7titsj0HsR2pIkUVhv4qNtpXyzrwqj3cUrVw3nkuFymI8Qgnqjndh26OVfqrOycT+mfANH+UMnKj847NTkB4f1nPzgsNMjPzjsxJV2PPzA6QLsTABWtXv/KPBoD1/DDw47NfvS8YPDesI+Pzis52z0g8NOh72nqRLaGt5ep7PhRXa5tAFFwOO/ZsV1Y1OG9/MeQO4JPe7dvg9Yi9zzWANEngHbPgNqkHsOlcDvkXvA7e3a5y0rAW946/YgMPoM2/mx145sZIBd+8b+ca+dh4ELfiUbJyFHZWcD+71/Fx5Tn61t3/OZqs9u7GyrTwtybMoZq09gqPf+yEYe5fzVuz0D2IncC24CtN7tAcgNf6F3f8avVJfHs3Odty6twH+A4DP5nbf9nU5XyAuRn2JK4AMhxDOn6Tq7xXHmnM4m+e3sOf0WbITfhp2/BRvht2Hn2WbjaUvWIYT4ETmg6XTrnV/hGj0hv509p9+CjfDbsPO3YCP8Nuw8q2w8bT13v/zyyy+/zpxOlArpl19++eXXb0j+xt0vv/zy679Qv+nGXZKk2ZIkHZYkqVCSpEfOtD1tkiSpVJKkg5Ik7Zckabd3W6QkSaslSSrw/o84A3Z9IElSvSRJh9pt69IuL9XzVW/dZkuSNPIM2/mkJElV3jrd712wb9v3qNfOw5Iknf8r2ZgiSdJ6SZJyJUnKkSTpPu/2s6o+u7HzrKlPSZICJEnaKUnSAa+NT3m395IkaYfXli8kSdJ4t2u97wu9+9NPt40/Y+ciSZJK2tXlcO/2M3YPAafHFfJXcktSIrsYZXDU3TLzTNvlta0UiD5m23N09Cf/5xmwawowko7+413ahewu195Hd8cZtvNJ5Axfx5ZtC7pq88su4tfxc08ARnpfhyCzlDLPtvrsxs6zpj69ddLmPqgGdnjr6EuO+rm/BdzpfX0XHf3cv/iV6vJ4di4Cruii/Bm7h4QQv+me+1igUAhRLIRwAJ8Dl5xhm7rTJcBH3tcfAZf+2gYIITZxNFquTcez6xJgsZC1HQiX5KQsZ8rO4+kS5AAcuxCiBNn3eexpM84rIUSNEGKv97URyEOOojyr6rMbO4+nX70+vXVi8r5Ve/8EMB1Y4t1+bF221fESYIbUU/H8p2bn8XTG7iH4bU/LJAEV7d5X0v2P9teUL+esJDN0AOLE0aQltcghymeDjmfX2Vi/d3uHtx+0m9Y643Z6pwVG/H97Z6zSQBBF0fMQBUEwCH6AiJDCIo1+g61g4WfY+QWWamkhYmUlWtgK2mtjISj+gYWgpYU+i5lNNosrIpqZXe+BhZAJ5HLDvs3O7NxH+CeXrZ8VnZCRn2Y2ZmY3hJ2o54Q7hmd3L5Luyjr6GuP4C2Hz2J9T1enuhZdb0ctdMyvS2ZL+5k0u7jnz6z1nR0GuuiJ7wDzQI+xe3U4rJ2BmU8AJsOHuQ01Fc/LzE51Z+enub+7eI7TlXAa6KfXUUdVpZouEeJUusATMAJsJJfZpcnHPtlerl3rOAkM9ZwFsuOdsaup0ZeWvuz/GE+sd2GcwVZBMp5mNEwrmkbufxrez8/MznTn6GXU9A5eEfKqOmRUbLcs6+hrj+DTwNCqNFZ0rcerL3f0VOCQTL5tc3K+BhbiiPkFYWDlLrOknPWdT04heuJW5ylUGiZpnwHp8gmKOkBh4NQI9BhwAd+6+UxrKys86nTn5aWazZtaJrycJTX7uCMVzLX6s6mXh8RpwEe+S/pQanfeli7kR1gXKXqY7h0a5evvbB2E1+oFmBIdVA7pyDQ5LGnT1hc5ycFjSoKv4nd8JDkvu5xc6s/GT7wWHHZN/cNgt/yE4TAghRDqaPC0jhBCiBhV3IYRoISruQgjRQlTchRCihai4CyFEC1FxF0KIFqLiLoQQLeQDVqX27SsucroAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 17 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# from pandas import read_csv\n",
    "# from matplotlib import pyplot\n",
    "# # load dataset\n",
    "# dataset = read_csv('pollution.csv', header=0, index_col=0)\n",
    "# values = dataset.values\n",
    "\n",
    "# print(values.shape)\n",
    "# # specify columns to plot\n",
    "# groups=[]\n",
    "# for i in range(values.shape[1]):\n",
    "#     groups.append(i)\n",
    "# # groups = [0, 1, 2, 3, 5, 6, 7,8,9,10,11,12,13,14,]\n",
    "# # print(groups)\n",
    "# i = 1\n",
    "# # plot each column\n",
    "# pyplot.figure()\n",
    "# for group in groups:\n",
    "#     pyplot.subplot(len(groups), 1, i)\n",
    "#     pyplot.plot(values[:, group])\n",
    "# #     print(group)\n",
    "#     pyplot.title(dataset.columns[group], y=1, loc='right')\n",
    "#     i += 1\n",
    "# # pyplot.plot(values[:,0])\n",
    "# # #     print(group)\n",
    "# # pyplot.title(dataset.columns[2], y=0.5, loc='right')\n",
    "# # pyplot.show()\n",
    "# # # values[:,0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(4504, 13)\n"
     ]
    }
   ],
   "source": [
    "n_hours=1\n",
    "n_out= 1\n",
    "dataset = read_csv('pollution.csv', header=0, index_col=0)\n",
    "values = dataset.values\n",
    "print(values.shape)\n",
    "# integer encode direction\n",
    "# encoder = LabelEncoder()\n",
    "# values[:,4] = encoder.fit_transform(values[:,4])\n",
    "# ensure all data is float\n",
    "# values = values.astype('float32')\n",
    "# # normalize features\n",
    "# # scaler = MinMaxScaler(feature_range=(0, 1))\n",
    "# # print(values.shape)\n",
    "# # scaled = scaler.fit_transform(values)\n",
    "# # print(len(scaled))\n",
    "# X, y = split_sequences(values, n_hours, n_out)\n",
    "# # for i in range(0,1):\n",
    "# #     print(X[i], y[i])\n",
    "# print(X.shape,y.shape)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "from keras.layers import RepeatVector\n",
    "from keras.layers import TimeDistributed\n",
    "from numpy import array\n",
    "\n",
    "\n",
    "def split_sequences(sequences, n_steps_in, n_steps_out):\n",
    "    X, y = list(), list()\n",
    "    for i in range(len(sequences)):\n",
    "    # find the end of this pattern\n",
    "        end_ix = i + n_steps_in\n",
    "        out_end_ix = end_ix + n_steps_out-1\n",
    "    # check if we are beyond the dataset\n",
    "        if out_end_ix > len(sequences):\n",
    "            break\n",
    "        # gather input and output parts of the pattern\n",
    "        \n",
    "        seq_x, seq_y = sequences[i:end_ix, :-1], sequences[end_ix-1:out_end_ix, -1]\n",
    "        X.append(seq_x)\n",
    "        y.append(seq_y)\n",
    "    return array(X), array(y)\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "def MODEL_FNN_adam(train_X,test_X,train_y,test_y,val_X,val_y,n_out,n_hours,n_features):\n",
    "#     train_X=train_X.flatten()\n",
    "    print(train_X.shape)\n",
    "    train_X=np.reshape(train_X,(train_X.shape[0],n_hours*n_features))\n",
    "    test_X=np.reshape(test_X,(test_X.shape[0],n_hours*n_features))\n",
    "    val_X=np.reshape(val_X,(val_X.shape[0],n_hours*n_features))\n",
    "    model = Sequential()\n",
    "    model.add(Dense(256, input_dim=train_X.shape[1], activation='relu'))\n",
    "    model.add(Dense(1, activation='relu'))\n",
    "    model.add(Dense(n_out, activation='sigmoid'))\n",
    "    # compile the keras model\n",
    "    model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])\n",
    "    # fit the keras model on the dataset\n",
    "    model.fit(train_X, train_y, epochs=200, batch_size=20, validation_data=(val_X, val_y), verbose=0, shuffle=False)\n",
    "    yhat11 = model.predict(test_X, verbose=0)\n",
    "    print(\"RMSE error using \",n_hours,\" state size to predict \",n_out,\" step is =\", np.sqrt(((np.sum((yhat11-test_y)**2,axis=0)))))\n",
    "    return(np.sqrt(((np.sum((yhat11-test_y)**2,axis=0)))))\n",
    "\n",
    "def MODEL_FNN_sgd(train_X,test_X,train_y,test_y,val_X,val_y,n_out,n_hours,n_features):\n",
    "#     train_X=train_X.flatten()\n",
    "    print(train_X.shape)\n",
    "    train_X=np.reshape(train_X,(train_X.shape[0],n_hours*n_features))\n",
    "    test_X=np.reshape(test_X,(test_X.shape[0],n_hours*n_features))\n",
    "    val_X=np.reshape(val_X,(val_X.shape[0],n_hours*n_features))\n",
    "    model = Sequential()\n",
    "    model.add(Dense(256, input_dim=train_X.shape[1], activation='relu'))\n",
    "    model.add(Dense(128, activation='relu'))\n",
    "    model.add(Dense(n_out, activation='sigmoid'))\n",
    "    # compile the keras model\n",
    "    model.compile(loss='binary_crossentropy', optimizer='sgd', metrics=['accuracy'])\n",
    "    # fit the keras model on the dataset\n",
    "    model.fit(train_X, train_y, epochs=200, batch_size=20, validation_data=(val_X, val_y), verbose=0, shuffle=False)\n",
    "    yhat11 = model.predict(test_X, verbose=0)\n",
    "    print(\"RMSE error using \",n_hours,\" state size to predict \",n_out,\" step is =\", np.sqrt(((np.sum((yhat11-test_y)**2,axis=0)))))\n",
    "    return(np.sqrt(((np.sum((yhat11-test_y)**2,axis=0)))))\n",
    "\n",
    "\n",
    "\n",
    "def MODEL_LSTM(train_X,test_X,train_y,test_y,val_X,val_y,n_out,n_hours,n_features):\n",
    "    model = Sequential()\n",
    "    model.add(LSTM(100, activation='relu', return_sequences=True, input_shape=(n_hours,n_features)))\n",
    "\n",
    "    model.add(LSTM(100, activation='relu'))\n",
    "    model.add(Dense(n_out))\n",
    "    model.compile(optimizer='adam', loss='mse')\n",
    "# fit model\n",
    "    model.fit(train_X, train_y, epochs=200, batch_size=20, validation_data=(val_X, val_y), verbose=0, shuffle=False)\n",
    "    yhat11 = model.predict(test_X, verbose=0)\n",
    "    print(\"RMSE error using \",n_hours,\" state size to predict \",n_out,\" step is =\", np.sqrt(((np.sum((yhat11-test_y)**2,axis=0)))))\n",
    "    return(np.sqrt(((np.sum((yhat11-test_y)**2,axis=0)))))\n",
    "\n",
    "def MODEL_Bi_LSTM(train_X,test_X,train_y,test_y,val_X,val_y,n_out,n_hours,n_features):\n",
    "    model = Sequential()\n",
    "    model.add(Bidirectional(LSTM(100, activation='relu', return_sequences=True, input_shape=(n_hours,n_features))))\n",
    "\n",
    "    model.add(Bidirectional(LSTM(100, activation='relu', return_sequences=True, input_shape=(n_hours,n_features))))\n",
    "    model.add(LSTM(100, activation='relu'))\n",
    "    model.add(Dense(n_out))\n",
    "    model.compile(optimizer='adam', loss='mse')\n",
    "# fit model\n",
    "    model.fit(train_X, train_y, epochs=200, batch_size=20, validation_data=(val_X, val_y), verbose=0, shuffle=False)\n",
    "    yhat11 = model.predict(test_X, verbose=0)\n",
    "    print(\"RMSE error using \",n_hours,\" state size to predict \",n_out,\" step is =\", np.sqrt(((np.sum((yhat11-test_y)**2,axis=0)))))\n",
    "    return(np.sqrt(((np.sum((yhat11-test_y)**2,axis=0)))))\n",
    "\n",
    "\n",
    "def MODEL_EN_DC(train_X,test_X,train_y,test_y,val_X,val_y,n_out,n_hours,n_features):\n",
    "    train_y = train_y.reshape((train_y.shape[0], train_y.shape[1], 1))\n",
    "    test_y = test_y.reshape((test_y.shape[0], test_y.shape[1], 1))\n",
    "    val_y = val_y.reshape((val_y.shape[0], val_y.shape[1], 1))\n",
    "    model = Sequential()\n",
    "    model.add(LSTM(200, activation='relu',input_shape=(n_hours,n_features)))\n",
    "    model.add(RepeatVector(n_out))\n",
    "    model.add(LSTM(200, activation='relu', return_sequences=True))\n",
    "    model.add(TimeDistributed(Dense(100, activation='relu')))\n",
    "    model.add(TimeDistributed(Dense(1)))\n",
    "#     model.add(Dense(n_out))\n",
    "    model.compile(optimizer='adam', loss='mse')\n",
    "# fit model\n",
    "    model.fit(train_X, train_y, epochs=200, batch_size=20, validation_data=(val_X, val_y), verbose=0, shuffle=False)\n",
    "    yhat11 = model.predict(test_X, verbose=0)\n",
    "    \n",
    "    print(\"RMSE error using \",n_hours,\" state size to predict \",n_out,\" step is =\", np.sqrt(((np.sum((yhat11-test_y)**2,axis=0)))))\n",
    "    return(np.sqrt(((np.sum((yhat11-test_y)**2,axis=0)))),yhat11,test_y)\n",
    "\n",
    "def main(n_out_max,n_hour_max):\n",
    "    dataset = read_csv('pollution.csv', header=0, index_col=0)\n",
    "    values = dataset.values  \n",
    "    values = values.astype('float32')\n",
    "# normalize features\n",
    "    scaler = MinMaxScaler(feature_range=(0, 1))\n",
    "    print(values.shape)\n",
    "    scaled = scaler.fit_transform(values)\n",
    "    print(len(scaled))\n",
    "    result=np.zeros((n_out_max,n_hour_max),dtype=np.float32)\n",
    "    for n_out in range (1,n_out_max+1):\n",
    "        for n_hours in range(1,n_hour_max+1):\n",
    "            print(\"Number of steps predicted= \",n_out,\"Number of steps Multivariate threads ussed= \",n_hours)\n",
    "            X, y = split_sequences(scaled, n_hours, n_out)\n",
    "            train_X, train_y = X[0:300,:,:], y[0:300,:]\n",
    "            val_X, val_y = X[300:330,:,:], y[300:330,:]\n",
    "            test_X, test_y = X[330:,:,:], y[330:,:]\n",
    "            print(\"train_X.shape, train_y.shape, test_X.shape, test_y.shape=\",train_X.shape, train_y.shape, test_X.shape, test_y.shape)\n",
    "            print(\"val X, val y\",val_X.shape, val_y.shape)\n",
    "            n_features = X.shape[2]\n",
    "            error=MODEL(train_X,test_X,train_y,test_y,val_X,val_y,n_out,n_hours,n_features)\n",
    "            result[n_out-1,n_hours-1]=error\n",
    "      \n",
    "    return result\n",
    "            \n",
    "            \n",
    "            \n",
    "            \n",
    "n_out_max,n_hour_max= 10,5\n",
    "\n",
    "# r5=main(5,10)\n",
    "import datetime\n",
    "out_range=[10]\n",
    "dataset_train = read_csv('train_pollution.csv', header=0, index_col=0)\n",
    "dataset_test = read_csv('test_pollution.csv', header=0, index_col=0)\n",
    "values_train = dataset_train.values\n",
    "values_test = dataset_test.values\n",
    "values_train=values_train[:,1:-6]\n",
    "values_test=values_test[:,1:-6]\n",
    "\n",
    "values_train = values_train.astype('float32')\n",
    "values_test = values_test.astype('float32')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING: Logging before flag parsing goes to stderr.\n",
      "W0727 11:54:16.563438 139686236600064 deprecation_wrapper.py:119] From /home/rishotics/anaconda3/envs/rl3.6/lib/python3.6/site-packages/keras/backend/tensorflow_backend.py:74: The name tf.get_default_graph is deprecated. Please use tf.compat.v1.get_default_graph instead.\n",
      "\n",
      "W0727 11:54:16.702642 139686236600064 deprecation_wrapper.py:119] From /home/rishotics/anaconda3/envs/rl3.6/lib/python3.6/site-packages/keras/backend/tensorflow_backend.py:517: The name tf.placeholder is deprecated. Please use tf.compat.v1.placeholder instead.\n",
      "\n",
      "W0727 11:54:16.704789 139686236600064 deprecation_wrapper.py:119] From /home/rishotics/anaconda3/envs/rl3.6/lib/python3.6/site-packages/keras/backend/tensorflow_backend.py:4138: The name tf.random_uniform is deprecated. Please use tf.random.uniform instead.\n",
      "\n",
      "W0727 11:54:16.747227 139686236600064 deprecation_wrapper.py:119] From /home/rishotics/anaconda3/envs/rl3.6/lib/python3.6/site-packages/keras/optimizers.py:790: The name tf.train.Optimizer is deprecated. Please use tf.compat.v1.train.Optimizer instead.\n",
      "\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Number of steps predicted=  10 Number of steps Multivariate threads ussed=  10 iteration number=  1\n",
      "(852, 10, 11) (852, 10)\n",
      "train_X.shape, train_y.shape, test_X.shape, test_y.shape= (3351, 10, 11) (3351, 10) (452, 10, 11) (452, 10)\n",
      "val X, val y (400, 10, 11) (400, 10)\n",
      "(3351, 10, 11)\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "W0727 11:54:16.769717 139686236600064 deprecation_wrapper.py:119] From /home/rishotics/anaconda3/envs/rl3.6/lib/python3.6/site-packages/keras/backend/tensorflow_backend.py:3376: The name tf.log is deprecated. Please use tf.math.log instead.\n",
      "\n",
      "W0727 11:54:16.774148 139686236600064 deprecation.py:323] From /home/rishotics/anaconda3/envs/rl3.6/lib/python3.6/site-packages/tensorflow/python/ops/nn_impl.py:180: add_dispatch_support.<locals>.wrapper (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Use tf.where in 2.0, which has the same broadcast rule as np.where\n",
      "W0727 11:54:17.002146 139686236600064 deprecation_wrapper.py:119] From /home/rishotics/anaconda3/envs/rl3.6/lib/python3.6/site-packages/keras/backend/tensorflow_backend.py:986: The name tf.assign_add is deprecated. Please use tf.compat.v1.assign_add instead.\n",
      "\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "RMSE error using  10  state size to predict  10  step is = [1687.1726 1703.3126 1684.3483 1684.8247 1685.0763 1684.6573 1684.4218\n",
      " 1683.5906 1683.5874 1683.9226]\n"
     ]
    }
   ],
   "source": [
    "\n",
    "# result=np.zeros((len(out_range),10),dtype=np.float32)\n",
    "result= []\n",
    "# dataset = read_csv('pollution.csv', header=0, index_col=0)\n",
    "# values = dataset.values\n",
    "# integer encode direction\n",
    "# encoder = LabelEncoder()\n",
    "# values[:,4] = encoder.fit_transform(values[:,4])\n",
    "# ensure all data is float\n",
    "\n",
    "dataset_train = read_csv('train_pollution.csv', header=0, index_col=0)\n",
    "dataset_test = read_csv('test_pollution.csv', header=0, index_col=0)\n",
    "values_train = dataset_train.values\n",
    "values_test = dataset_test.values\n",
    "values_train=values_train[:,1:-6]\n",
    "values_test=values_test[:,1:-6]\n",
    "\n",
    "values_train = values_train.astype('float32')\n",
    "values_test = values_test.astype('float32')\n",
    "for i,k in enumerate(out_range):\n",
    "    for j in range(1,2):\n",
    "        for m in range(10,11):\n",
    "            n_out=k\n",
    "            n_hours=m\n",
    "            print(\"Number of steps predicted= \",n_out,\"Number of steps Multivariate threads ussed= \",n_hours, \"iteration number= \",j)\n",
    "            \n",
    "#             X, y = split_sequences(values, n_hours, n_out)\n",
    "            train_X, train_y = split_sequences(values_train,n_hours,n_out)\n",
    "            val_X, val_y = split_sequences(values_test,n_hours,n_out)\n",
    "            print(val_X.shape,val_y.shape)\n",
    "            test_X, test_y = val_X[400:852,:,:],val_y[400:852,:]\n",
    "            val_X, val_y = val_X[0:400,:,:],val_y[0:400,:]\n",
    "            print(\"train_X.shape, train_y.shape, test_X.shape, test_y.shape=\",train_X.shape, train_y.shape, test_X.shape, test_y.shape)\n",
    "            print(\"val X, val y\",val_X.shape, val_y.shape)\n",
    "            n_features = train_X.shape[2]\n",
    "            error=MODEL_FNN_sgd(train_X,test_X,train_y,test_y,val_X,val_y,n_out,n_hours,n_features)\n",
    "#             result[i,m-1]=result[i,m-1]+error\n",
    "            result.append(error)\n",
    "            \n",
    "        \n",
    "result=np.array(result)\n",
    "np.savetxt(\"10i_\"+str(result.shape[1])+\"o_FNN_sgd_\"+str(result.shape[0])+\"i.csv\"+str(datetime.datetime.now()), result, delimiter=\",\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Number of steps predicted=  10 Number of steps Multivariate threads ussed=  10 iteration number=  1\n",
      "(852, 10, 11) (852, 10)\n",
      "train_X.shape, train_y.shape, test_X.shape, test_y.shape= (3351, 10, 11) (3351, 10) (452, 10, 11) (452, 10)\n",
      "val X, val y (400, 10, 11) (400, 10)\n",
      "(3351, 10, 11)\n",
      "RMSE error using  10  state size to predict  10  step is = [1687.1726 1686.9001 1684.3483 1684.8247 1685.0763 1684.6573 1684.4218\n",
      " 1683.5906 1683.5874 1683.9226]\n",
      "Number of steps predicted=  10 Number of steps Multivariate threads ussed=  10 iteration number=  2\n",
      "(852, 10, 11) (852, 10)\n",
      "train_X.shape, train_y.shape, test_X.shape, test_y.shape= (3351, 10, 11) (3351, 10) (452, 10, 11) (452, 10)\n",
      "val X, val y (400, 10, 11) (400, 10)\n",
      "(3351, 10, 11)\n",
      "RMSE error using  10  state size to predict  10  step is = [1703.589  1686.9001 1700.7543 1684.8247 1685.0763 1684.6573 1700.8264\n",
      " 1683.5906 1683.5874 1683.9226]\n",
      "Number of steps predicted=  10 Number of steps Multivariate threads ussed=  10 iteration number=  3\n",
      "(852, 10, 11) (852, 10)\n",
      "train_X.shape, train_y.shape, test_X.shape, test_y.shape= (3351, 10, 11) (3351, 10) (452, 10, 11) (452, 10)\n",
      "val X, val y (400, 10, 11) (400, 10)\n",
      "(3351, 10, 11)\n",
      "RMSE error using  10  state size to predict  10  step is = [1687.1726 1686.9001 1684.3483 1684.8247 1685.0763 1684.6573 1700.8264\n",
      " 1683.5906 1683.5874 1683.9226]\n",
      "Number of steps predicted=  10 Number of steps Multivariate threads ussed=  10 iteration number=  4\n",
      "(852, 10, 11) (852, 10)\n",
      "train_X.shape, train_y.shape, test_X.shape, test_y.shape= (3351, 10, 11) (3351, 10) (452, 10, 11) (452, 10)\n",
      "val X, val y (400, 10, 11) (400, 10)\n",
      "(3351, 10, 11)\n",
      "RMSE error using  10  state size to predict  10  step is = [1687.1726 1686.9001 1700.7543 1684.8247 1701.4889 1701.065  1700.8264\n",
      " 1683.5906 1683.5874 1683.9226]\n",
      "Number of steps predicted=  10 Number of steps Multivariate threads ussed=  10 iteration number=  5\n",
      "(852, 10, 11) (852, 10)\n",
      "train_X.shape, train_y.shape, test_X.shape, test_y.shape= (3351, 10, 11) (3351, 10) (452, 10, 11) (452, 10)\n",
      "val X, val y (400, 10, 11) (400, 10)\n",
      "(3351, 10, 11)\n",
      "RMSE error using  10  state size to predict  10  step is = [1687.1726 1686.9001 1684.3483 1684.8247 1685.0763 1684.6573 1684.4218\n",
      " 1683.5906 1683.5874 1683.9226]\n",
      "Number of steps predicted=  10 Number of steps Multivariate threads ussed=  10 iteration number=  6\n",
      "(852, 10, 11) (852, 10)\n",
      "train_X.shape, train_y.shape, test_X.shape, test_y.shape= (3351, 10, 11) (3351, 10) (452, 10, 11) (452, 10)\n",
      "val X, val y (400, 10, 11) (400, 10)\n",
      "(3351, 10, 11)\n",
      "RMSE error using  10  state size to predict  10  step is = [1687.1726 1686.9001 1684.3483 1684.8247 1685.0763 1684.6573 1684.4218\n",
      " 1683.5906 1683.5874 1683.9226]\n",
      "Number of steps predicted=  10 Number of steps Multivariate threads ussed=  10 iteration number=  7\n",
      "(852, 10, 11) (852, 10)\n",
      "train_X.shape, train_y.shape, test_X.shape, test_y.shape= (3351, 10, 11) (3351, 10) (452, 10, 11) (452, 10)\n",
      "val X, val y (400, 10, 11) (400, 10)\n",
      "(3351, 10, 11)\n",
      "RMSE error using  10  state size to predict  10  step is = [1703.589  1686.9001 1700.7543 1684.8247 1685.0763 1684.6573 1700.8264\n",
      " 1683.5906 1683.5874 1683.9226]\n",
      "Number of steps predicted=  10 Number of steps Multivariate threads ussed=  10 iteration number=  8\n",
      "(852, 10, 11) (852, 10)\n",
      "train_X.shape, train_y.shape, test_X.shape, test_y.shape= (3351, 10, 11) (3351, 10) (452, 10, 11) (452, 10)\n",
      "val X, val y (400, 10, 11) (400, 10)\n",
      "(3351, 10, 11)\n",
      "RMSE error using  10  state size to predict  10  step is = [1687.1726 1686.9001 1684.3483 1684.8247 1685.0763 1684.6573 1684.4218\n",
      " 1683.5906 1683.5874 1683.9226]\n",
      "Number of steps predicted=  10 Number of steps Multivariate threads ussed=  10 iteration number=  9\n",
      "(852, 10, 11) (852, 10)\n",
      "train_X.shape, train_y.shape, test_X.shape, test_y.shape= (3351, 10, 11) (3351, 10) (452, 10, 11) (452, 10)\n",
      "val X, val y (400, 10, 11) (400, 10)\n",
      "(3351, 10, 11)\n",
      "RMSE error using  10  state size to predict  10  step is = [1687.1726 1686.9001 1684.3483 1684.8247 1685.0763 1684.6573 1684.4218\n",
      " 1683.5906 1683.5874 1683.9226]\n",
      "Number of steps predicted=  10 Number of steps Multivariate threads ussed=  10 iteration number=  10\n",
      "(852, 10, 11) (852, 10)\n",
      "train_X.shape, train_y.shape, test_X.shape, test_y.shape= (3351, 10, 11) (3351, 10) (452, 10, 11) (452, 10)\n",
      "val X, val y (400, 10, 11) (400, 10)\n",
      "(3351, 10, 11)\n",
      "RMSE error using  10  state size to predict  10  step is = [1687.1726 1703.3126 1684.3483 1684.8247 1701.4889 1701.065  1700.8264\n",
      " 1683.5906 1699.9822 1683.9226]\n",
      "Number of steps predicted=  10 Number of steps Multivariate threads ussed=  10 iteration number=  11\n",
      "(852, 10, 11) (852, 10)\n",
      "train_X.shape, train_y.shape, test_X.shape, test_y.shape= (3351, 10, 11) (3351, 10) (452, 10, 11) (452, 10)\n",
      "val X, val y (400, 10, 11) (400, 10)\n",
      "(3351, 10, 11)\n",
      "RMSE error using  10  state size to predict  10  step is = [1687.1726 1686.9001 1684.3483 1684.8247 1685.0763 1684.6573 1684.4218\n",
      " 1683.5906 1683.5874 1683.9226]\n",
      "Number of steps predicted=  10 Number of steps Multivariate threads ussed=  10 iteration number=  12\n",
      "(852, 10, 11) (852, 10)\n",
      "train_X.shape, train_y.shape, test_X.shape, test_y.shape= (3351, 10, 11) (3351, 10) (452, 10, 11) (452, 10)\n",
      "val X, val y (400, 10, 11) (400, 10)\n",
      "(3351, 10, 11)\n",
      "RMSE error using  10  state size to predict  10  step is = [1703.589  1686.9001 1684.3483 1684.8247 1701.4889 1684.6573 1684.4218\n",
      " 1683.5906 1683.5874 1683.9226]\n",
      "Number of steps predicted=  10 Number of steps Multivariate threads ussed=  10 iteration number=  13\n",
      "(852, 10, 11) (852, 10)\n",
      "train_X.shape, train_y.shape, test_X.shape, test_y.shape= (3351, 10, 11) (3351, 10) (452, 10, 11) (452, 10)\n",
      "val X, val y (400, 10, 11) (400, 10)\n",
      "(3351, 10, 11)\n",
      "RMSE error using  10  state size to predict  10  step is = [1687.1726 1703.3126 1684.3483 1684.8247 1685.0763 1684.6573 1684.4218\n",
      " 1683.5906 1683.5874 1683.9226]\n",
      "Number of steps predicted=  10 Number of steps Multivariate threads ussed=  10 iteration number=  14\n",
      "(852, 10, 11) (852, 10)\n",
      "train_X.shape, train_y.shape, test_X.shape, test_y.shape= (3351, 10, 11) (3351, 10) (452, 10, 11) (452, 10)\n",
      "val X, val y (400, 10, 11) (400, 10)\n",
      "(3351, 10, 11)\n",
      "RMSE error using  10  state size to predict  10  step is = [1703.589  1686.9001 1684.3483 1684.8247 1685.0763 1684.6573 1700.8264\n",
      " 1683.5906 1683.5874 1700.3268]\n",
      "Number of steps predicted=  10 Number of steps Multivariate threads ussed=  10 iteration number=  15\n",
      "(852, 10, 11) (852, 10)\n",
      "train_X.shape, train_y.shape, test_X.shape, test_y.shape= (3351, 10, 11) (3351, 10) (452, 10, 11) (452, 10)\n",
      "val X, val y (400, 10, 11) (400, 10)\n",
      "(3351, 10, 11)\n",
      "RMSE error using  10  state size to predict  10  step is = [1703.589  1686.9001 1684.3483 1684.8247 1701.4889 1684.6573 1684.4218\n",
      " 1699.9855 1683.5874 1700.3268]\n",
      "Number of steps predicted=  10 Number of steps Multivariate threads ussed=  10 iteration number=  16\n",
      "(852, 10, 11) (852, 10)\n",
      "train_X.shape, train_y.shape, test_X.shape, test_y.shape= (3351, 10, 11) (3351, 10) (452, 10, 11) (452, 10)\n",
      "val X, val y (400, 10, 11) (400, 10)\n",
      "(3351, 10, 11)\n",
      "RMSE error using  10  state size to predict  10  step is = [1687.1726 1686.9001 1684.3483 1684.8247 1685.0763 1684.6573 1684.4218\n",
      " 1683.5906 1683.5874 1683.9226]\n",
      "Number of steps predicted=  10 Number of steps Multivariate threads ussed=  10 iteration number=  17\n",
      "(852, 10, 11) (852, 10)\n",
      "train_X.shape, train_y.shape, test_X.shape, test_y.shape= (3351, 10, 11) (3351, 10) (452, 10, 11) (452, 10)\n",
      "val X, val y (400, 10, 11) (400, 10)\n",
      "(3351, 10, 11)\n",
      "RMSE error using  10  state size to predict  10  step is = [1687.1726 1686.9001 1684.3483 1684.8247 1685.0763 1684.6573 1684.4218\n",
      " 1683.5906 1683.5874 1683.9226]\n",
      "Number of steps predicted=  10 Number of steps Multivariate threads ussed=  10 iteration number=  18\n",
      "(852, 10, 11) (852, 10)\n",
      "train_X.shape, train_y.shape, test_X.shape, test_y.shape= (3351, 10, 11) (3351, 10) (452, 10, 11) (452, 10)\n",
      "val X, val y (400, 10, 11) (400, 10)\n",
      "(3351, 10, 11)\n",
      "RMSE error using  10  state size to predict  10  step is = [1687.1726 1686.9001 1684.3483 1684.8247 1685.0763 1684.6573 1684.4218\n",
      " 1683.5906 1683.5874 1683.9226]\n",
      "Number of steps predicted=  10 Number of steps Multivariate threads ussed=  10 iteration number=  19\n",
      "(852, 10, 11) (852, 10)\n",
      "train_X.shape, train_y.shape, test_X.shape, test_y.shape= (3351, 10, 11) (3351, 10) (452, 10, 11) (452, 10)\n",
      "val X, val y (400, 10, 11) (400, 10)\n",
      "(3351, 10, 11)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "RMSE error using  10  state size to predict  10  step is = [1687.1726 1686.9001 1684.3483 1684.8247 1685.0763 1684.6573 1684.4218\n",
      " 1683.5906 1683.5874 1683.9226]\n",
      "Number of steps predicted=  10 Number of steps Multivariate threads ussed=  10 iteration number=  20\n",
      "(852, 10, 11) (852, 10)\n",
      "train_X.shape, train_y.shape, test_X.shape, test_y.shape= (3351, 10, 11) (3351, 10) (452, 10, 11) (452, 10)\n",
      "val X, val y (400, 10, 11) (400, 10)\n",
      "(3351, 10, 11)\n",
      "RMSE error using  10  state size to predict  10  step is = [1687.1726 1703.3126 1684.3483 1684.8247 1685.0763 1701.065  1684.4218\n",
      " 1683.5906 1683.5874 1683.9226]\n",
      "Number of steps predicted=  10 Number of steps Multivariate threads ussed=  10 iteration number=  21\n",
      "(852, 10, 11) (852, 10)\n",
      "train_X.shape, train_y.shape, test_X.shape, test_y.shape= (3351, 10, 11) (3351, 10) (452, 10, 11) (452, 10)\n",
      "val X, val y (400, 10, 11) (400, 10)\n",
      "(3351, 10, 11)\n",
      "RMSE error using  10  state size to predict  10  step is = [1687.1726 1686.9001 1684.3483 1684.8247 1685.0763 1684.6573 1684.4218\n",
      " 1683.5906 1683.5874 1683.9226]\n",
      "Number of steps predicted=  10 Number of steps Multivariate threads ussed=  10 iteration number=  22\n",
      "(852, 10, 11) (852, 10)\n",
      "train_X.shape, train_y.shape, test_X.shape, test_y.shape= (3351, 10, 11) (3351, 10) (452, 10, 11) (452, 10)\n",
      "val X, val y (400, 10, 11) (400, 10)\n",
      "(3351, 10, 11)\n",
      "RMSE error using  10  state size to predict  10  step is = [1687.1726 1686.9001 1700.7543 1701.235  1685.0763 1701.065  1700.8264\n",
      " 1683.5906 1683.5874 1683.9226]\n",
      "Number of steps predicted=  10 Number of steps Multivariate threads ussed=  10 iteration number=  23\n",
      "(852, 10, 11) (852, 10)\n",
      "train_X.shape, train_y.shape, test_X.shape, test_y.shape= (3351, 10, 11) (3351, 10) (452, 10, 11) (452, 10)\n",
      "val X, val y (400, 10, 11) (400, 10)\n",
      "(3351, 10, 11)\n",
      "RMSE error using  10  state size to predict  10  step is = [1703.589  1686.9001 1684.3483 1684.8247 1685.0763 1684.6573 1684.4218\n",
      " 1683.5906 1699.9822 1683.9226]\n",
      "Number of steps predicted=  10 Number of steps Multivariate threads ussed=  10 iteration number=  24\n",
      "(852, 10, 11) (852, 10)\n",
      "train_X.shape, train_y.shape, test_X.shape, test_y.shape= (3351, 10, 11) (3351, 10) (452, 10, 11) (452, 10)\n",
      "val X, val y (400, 10, 11) (400, 10)\n",
      "(3351, 10, 11)\n",
      "RMSE error using  10  state size to predict  10  step is = [1687.1726 1686.9001 1684.3483 1684.8247 1685.0763 1684.6573 1684.4218\n",
      " 1683.5906 1683.5874 1683.9226]\n",
      "Number of steps predicted=  10 Number of steps Multivariate threads ussed=  10 iteration number=  25\n",
      "(852, 10, 11) (852, 10)\n",
      "train_X.shape, train_y.shape, test_X.shape, test_y.shape= (3351, 10, 11) (3351, 10) (452, 10, 11) (452, 10)\n",
      "val X, val y (400, 10, 11) (400, 10)\n",
      "(3351, 10, 11)\n",
      "RMSE error using  10  state size to predict  10  step is = [1687.1726 1703.3126 1700.7543 1701.235  1685.0763 1684.6573 1684.4218\n",
      " 1683.5906 1699.9822 1683.9226]\n",
      "Number of steps predicted=  10 Number of steps Multivariate threads ussed=  10 iteration number=  26\n",
      "(852, 10, 11) (852, 10)\n",
      "train_X.shape, train_y.shape, test_X.shape, test_y.shape= (3351, 10, 11) (3351, 10) (452, 10, 11) (452, 10)\n",
      "val X, val y (400, 10, 11) (400, 10)\n",
      "(3351, 10, 11)\n",
      "RMSE error using  10  state size to predict  10  step is = [1703.589  1686.9001 1684.3483 1684.8247 1701.4889 1684.6573 1684.4218\n",
      " 1683.5906 1699.9822 1683.9226]\n",
      "Number of steps predicted=  10 Number of steps Multivariate threads ussed=  10 iteration number=  27\n",
      "(852, 10, 11) (852, 10)\n",
      "train_X.shape, train_y.shape, test_X.shape, test_y.shape= (3351, 10, 11) (3351, 10) (452, 10, 11) (452, 10)\n",
      "val X, val y (400, 10, 11) (400, 10)\n",
      "(3351, 10, 11)\n",
      "RMSE error using  10  state size to predict  10  step is = [1687.1726 1686.9001 1684.3483 1684.8247 1685.0763 1684.6573 1684.4218\n",
      " 1683.5906 1683.5874 1683.9226]\n",
      "Number of steps predicted=  10 Number of steps Multivariate threads ussed=  10 iteration number=  28\n",
      "(852, 10, 11) (852, 10)\n",
      "train_X.shape, train_y.shape, test_X.shape, test_y.shape= (3351, 10, 11) (3351, 10) (452, 10, 11) (452, 10)\n",
      "val X, val y (400, 10, 11) (400, 10)\n",
      "(3351, 10, 11)\n",
      "RMSE error using  10  state size to predict  10  step is = [1687.1726 1686.9001 1684.3483 1701.235  1685.0763 1701.065  1700.8264\n",
      " 1683.5906 1683.5874 1700.3268]\n",
      "Number of steps predicted=  10 Number of steps Multivariate threads ussed=  10 iteration number=  29\n",
      "(852, 10, 11) (852, 10)\n",
      "train_X.shape, train_y.shape, test_X.shape, test_y.shape= (3351, 10, 11) (3351, 10) (452, 10, 11) (452, 10)\n",
      "val X, val y (400, 10, 11) (400, 10)\n",
      "(3351, 10, 11)\n",
      "RMSE error using  10  state size to predict  10  step is = [1687.1726 1686.9001 1684.3483 1684.8247 1701.4889 1701.065  1684.4218\n",
      " 1683.5906 1699.9822 1683.9226]\n",
      "Number of steps predicted=  10 Number of steps Multivariate threads ussed=  10 iteration number=  30\n",
      "(852, 10, 11) (852, 10)\n",
      "train_X.shape, train_y.shape, test_X.shape, test_y.shape= (3351, 10, 11) (3351, 10) (452, 10, 11) (452, 10)\n",
      "val X, val y (400, 10, 11) (400, 10)\n",
      "(3351, 10, 11)\n",
      "RMSE error using  10  state size to predict  10  step is = [1703.589  1686.9001 1684.3483 1701.235  1685.0763 1684.6573 1684.4218\n",
      " 1683.5906 1683.5874 1700.3268]\n"
     ]
    }
   ],
   "source": [
    "result= []\n",
    "for i,k in enumerate(out_range):\n",
    "    for j in range(1,):\n",
    "        for m in range(10,11):\n",
    "            n_out=k\n",
    "            n_hours=m\n",
    "            print(\"Number of steps predicted= \",n_out,\"Number of steps Multivariate threads ussed= \",n_hours, \"iteration number= \",j)\n",
    "            \n",
    "            train_X, train_y = split_sequences(values_train,n_hours,n_out)\n",
    "            val_X, val_y = split_sequences(values_test,n_hours,n_out)\n",
    "            print(val_X.shape,val_y.shape)\n",
    "            test_X, test_y = val_X[400:852,:,:],val_y[400:852,:]\n",
    "            val_X, val_y = val_X[0:400,:,:],val_y[0:400,:]\n",
    "            print(\"train_X.shape, train_y.shape, test_X.shape, test_y.shape=\",train_X.shape, train_y.shape, test_X.shape, test_y.shape)\n",
    "            print(\"val X, val y\",val_X.shape, val_y.shape)\n",
    "            n_features = X.shape[2]\n",
    "            error=MODEL_FNN_adam(train_X,test_X,train_y,test_y,val_X,val_y,n_out,n_hours,n_features)\n",
    "#             result[i,m-1]=result[i,m-1]+error\n",
    "            result.append(error)\n",
    "            \n",
    "        \n",
    "result=np.array(result)\n",
    "np.savetxt(\"10i_\"+str(result.shape[1])+\"o_FNN_adam_\"+str(result.shape[0])+\"i.csv\"+str(datetime.datetime.now()), result, delimiter=\",\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Number of steps predicted=  10 Number of steps Multivariate threads ussed=  10 iteration number=  1\n",
      "(852, 10, 11) (852, 10)\n",
      "train_X.shape, train_y.shape, test_X.shape, test_y.shape= (3351, 10, 11) (3351, 10) (452, 10, 11) (452, 10)\n",
      "val X, val y (400, 10, 11) (400, 10)\n",
      "RMSE error using  10  state size to predict  10  step is = [ 984.3997 1561.0587 1743.3611 2033.1942 2607.3203 2549.747  2936.8887\n",
      " 3521.6306 3535.2332 3489.8276]\n",
      "Number of steps predicted=  10 Number of steps Multivariate threads ussed=  10 iteration number=  2\n",
      "(852, 10, 11) (852, 10)\n",
      "train_X.shape, train_y.shape, test_X.shape, test_y.shape= (3351, 10, 11) (3351, 10) (452, 10, 11) (452, 10)\n",
      "val X, val y (400, 10, 11) (400, 10)\n",
      "RMSE error using  10  state size to predict  10  step is = [ 667.07074  900.2795  1022.54565 1138.2212  1189.4921  1242.9229\n",
      " 1347.1564  1505.805   1611.873   1683.8087 ]\n",
      "Number of steps predicted=  10 Number of steps Multivariate threads ussed=  10 iteration number=  3\n",
      "(852, 10, 11) (852, 10)\n",
      "train_X.shape, train_y.shape, test_X.shape, test_y.shape= (3351, 10, 11) (3351, 10) (452, 10, 11) (452, 10)\n",
      "val X, val y (400, 10, 11) (400, 10)\n"
     ]
    }
   ],
   "source": [
    "result= []\n",
    "for i,k in enumerate(out_range):\n",
    "    for j in range(1,4):\n",
    "        for m in range(10,11):\n",
    "            n_out=k\n",
    "            n_hours=m\n",
    "            print(\"Number of steps predicted= \",n_out,\"Number of steps Multivariate threads ussed= \",n_hours, \"iteration number= \",j)\n",
    "            \n",
    "            train_X, train_y = split_sequences(values_train,n_hours,n_out)\n",
    "            val_X, val_y = split_sequences(values_test,n_hours,n_out)\n",
    "            print(val_X.shape,val_y.shape)\n",
    "            test_X, test_y = val_X[400:852,:,:],val_y[400:852,:]\n",
    "            val_X, val_y = val_X[0:400,:,:],val_y[0:400,:]\n",
    "            print(\"train_X.shape, train_y.shape, test_X.shape, test_y.shape=\",train_X.shape, train_y.shape, test_X.shape, test_y.shape)\n",
    "            print(\"val X, val y\",val_X.shape, val_y.shape)\n",
    "            n_features = train_X.shape[2]\n",
    "            error=MODEL_LSTM(train_X,test_X,train_y,test_y,val_X,val_y,n_out,n_hours,n_features)\n",
    "#             result[i,m-1]=result[i,m-1]+error\n",
    "            result.append(error)\n",
    "            \n",
    "        \n",
    "result=np.array(result)\n",
    "np.savetxt(\"10i_\"+str(result.shape[1])+\"o_LSTM_\"+str(result.shape[0])+\"i.csv\"+str(datetime.datetime.now()), result, delimiter=\",\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING: Logging before flag parsing goes to stderr.\n",
      "W0727 12:49:38.035093 139700072916736 deprecation_wrapper.py:119] From /home/rishotics/anaconda3/envs/rl3.6/lib/python3.6/site-packages/keras/backend/tensorflow_backend.py:74: The name tf.get_default_graph is deprecated. Please use tf.compat.v1.get_default_graph instead.\n",
      "\n",
      "W0727 12:49:38.051503 139700072916736 deprecation_wrapper.py:119] From /home/rishotics/anaconda3/envs/rl3.6/lib/python3.6/site-packages/keras/optimizers.py:790: The name tf.train.Optimizer is deprecated. Please use tf.compat.v1.train.Optimizer instead.\n",
      "\n",
      "W0727 12:49:38.066375 139700072916736 deprecation_wrapper.py:119] From /home/rishotics/anaconda3/envs/rl3.6/lib/python3.6/site-packages/keras/backend/tensorflow_backend.py:517: The name tf.placeholder is deprecated. Please use tf.compat.v1.placeholder instead.\n",
      "\n",
      "W0727 12:49:38.067845 139700072916736 deprecation_wrapper.py:119] From /home/rishotics/anaconda3/envs/rl3.6/lib/python3.6/site-packages/keras/backend/tensorflow_backend.py:4138: The name tf.random_uniform is deprecated. Please use tf.random.uniform instead.\n",
      "\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Number of steps predicted=  10 Number of steps Multivariate threads ussed=  10 iteration number=  1\n",
      "(852, 10, 11) (852, 10)\n",
      "train_X.shape, train_y.shape, test_X.shape, test_y.shape= (3351, 10, 11) (3351, 10) (452, 10, 11) (452, 10)\n",
      "val X, val y (400, 10, 11) (400, 10)\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "W0727 12:49:39.464528 139700072916736 deprecation.py:323] From /home/rishotics/anaconda3/envs/rl3.6/lib/python3.6/site-packages/tensorflow/python/ops/math_grad.py:1250: add_dispatch_support.<locals>.wrapper (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Use tf.where in 2.0, which has the same broadcast rule as np.where\n",
      "W0727 12:49:41.785706 139700072916736 deprecation_wrapper.py:119] From /home/rishotics/anaconda3/envs/rl3.6/lib/python3.6/site-packages/keras/backend/tensorflow_backend.py:986: The name tf.assign_add is deprecated. Please use tf.compat.v1.assign_add instead.\n",
      "\n",
      "W0727 12:49:41.980125 139700072916736 deprecation_wrapper.py:119] From /home/rishotics/anaconda3/envs/rl3.6/lib/python3.6/site-packages/keras/backend/tensorflow_backend.py:973: The name tf.assign is deprecated. Please use tf.compat.v1.assign instead.\n",
      "\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "RMSE error using  10  state size to predict  10  step is = [ 668.5189 1044.7133 1229.7838 1271.9037 1508.1089 1623.457  1637.5133\n",
      " 1717.6722 1767.8479 1707.3414]\n"
     ]
    }
   ],
   "source": [
    "result= []\n",
    "for i,k in enumerate(out_range):\n",
    "    for j in range(1,2):\n",
    "        for m in range(10,11):\n",
    "            n_out=k\n",
    "            n_hours=m\n",
    "            print(\"Number of steps predicted= \",n_out,\"Number of steps Multivariate threads ussed= \",n_hours, \"iteration number= \",j)\n",
    "            \n",
    "            train_X, train_y = split_sequences(values_train,n_hours,n_out)\n",
    "            val_X, val_y = split_sequences(values_test,n_hours,n_out)\n",
    "            print(val_X.shape,val_y.shape)\n",
    "            test_X, test_y = val_X[400:852,:,:],val_y[400:852,:]\n",
    "            val_X, val_y = val_X[0:400,:,:],val_y[0:400,:]\n",
    "            print(\"train_X.shape, train_y.shape, test_X.shape, test_y.shape=\",train_X.shape, train_y.shape, test_X.shape, test_y.shape)\n",
    "            print(\"val X, val y\",val_X.shape, val_y.shape)\n",
    "            n_features = train_X.shape[2]\n",
    "            error=MODEL_Bi_LSTM(train_X,test_X,train_y,test_y,val_X,val_y,n_out,n_hours,n_features)\n",
    "#             result[i,m-1]=result[i,m-1]+error\n",
    "            result.append(error)\n",
    "            \n",
    "        \n",
    "result=np.array(result)\n",
    "np.savetxt(\"10i_\"+str(result.shape[1])+\"o_bi_LSTM_\"+str(result.shape[0])+\"i.csv\"+str(datetime.datetime.now()), result, delimiter=\",\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "result1= []\n",
    "out_range=[10]\n",
    "for i,k in enumerate(out_range):\n",
    "    for j in range(1,3):\n",
    "        for m in range(10,11):\n",
    "            n_out=k\n",
    "            n_hours=m\n",
    "            print(\"Number of steps predicted= \",n_out,\"Number of steps Multivariate threads ussed= \",n_hours, \"iteration number= \",j)\n",
    "            \n",
    "            train_X, train_y = split_sequences(values_train,n_hours,n_out)\n",
    "            val_X, val_y = split_sequences(values_test,n_hours,n_out)\n",
    "            print(val_X.shape,val_y.shape)\n",
    "            test_X, test_y = val_X[400:852,:,:],val_y[400:852,:]\n",
    "            val_X, val_y = val_X[0:400,:,:],val_y[0:400,:]\n",
    "            print(\"train_X.shape, train_y.shape, test_X.shape, test_y.shape=\",train_X.shape, train_y.shape, test_X.shape, test_y.shape)\n",
    "            print(\"val X, val y\",val_X.shape, val_y.shape)\n",
    "            n_features = train_X.shape[2]\n",
    "            error,ypred,yori=MODEL_EN_DC(train_X,test_X,train_y,test_y,val_X,val_y,n_out,n_hours,n_features)\n",
    "#             result[i,m-1]=result[i,m-1]+error\n",
    "            result1.append(error)\n",
    "            \n",
    "        \n",
    "result1=np.array(result1)\n",
    "print(result1.shape)\n",
    "print(result1)\n",
    "result1=result1.reshape(result1.shape[0],result1.shape[1])\n",
    "np.savetxt(\"10i_\"+str(result1.shape[1])+\"o_EN_DC_\"+str(result1.shape[0])+\"i.csv\"+str(datetime.datetime.now()), result1, delimiter=\",\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(19, 10, 1)"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ypred.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "# n_out_max=3\n",
    "xlist = np.linspace(1, n_out_max, n_out_max)\n",
    "ylist = np.linspace(1, n_out_max, n_out_max)\n",
    "X, Y = np.meshgrid(xlist, ylist)\n",
    "# Z = np.sqrt(X**2 + Y**2)\n",
    "fig,ax=plt.subplots(1,1)\n",
    "cp = ax.contourf(X, Y, r)\n",
    "fig.colorbar(cp) # Add a colorbar to a plot\n",
    "ax.set_title('Number of steps used in multivariate analysis x ')\n",
    "#ax.set_xlabel('x (cm)')\n",
    "ax.set_ylabel('Number of steps predicted y')\n",
    "plt.show()\n",
    "print(\"Normalized RMSE Test\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "out_range=[1]\n",
    "# result=np.zeros((len(out_range),10),dtype=np.float32)\n",
    "result1= []\n",
    "for i,k in enumerate(out_range):\n",
    "    for j in range(1,31):\n",
    "        for m in range(10,11):\n",
    "            n_out=k\n",
    "            n_hours=m\n",
    "            print(\"Number of steps predicted= \",n_out,\"Number of steps Multivariate threads ussed= \",n_hours, \"iteration number= \",j)\n",
    "            X, y = split_sequences(scaled, n_hours, n_out)\n",
    "            train_X, train_y = X[0:300,:,:], y[0:300,:]\n",
    "            val_X, val_y = X[300:330,:,:], y[300:330,:]\n",
    "            test_X, test_y = X[330:,:,:], y[330:,:]\n",
    "            print(\"train_X.shape, train_y.shape, test_X.shape, test_y.shape=\",train_X.shape, train_y.shape, test_X.shape, test_y.shape)\n",
    "            print(\"val X, val y\",val_X.shape, val_y.shape)\n",
    "            n_features = X.shape[2]\n",
    "            error=MODEL(train_X,test_X,train_y,test_y,val_X,val_y,n_out,n_hours,n_features)\n",
    "#             result[i,m-1]=result[i,m-1]+error\n",
    "            result1.append(error)\n",
    "            \n",
    "        \n",
    "result1\n",
    "\n",
    "\n",
    "\n",
    "            \n",
    "            \n",
    "            \n",
    "    \n",
    "    \n",
    "            \n",
    "            "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import datetime\n",
    "def show_results(r,method):\n",
    "    x = datetime.datetime.now()\n",
    "    u=np.mean(r,axis=0)\n",
    "    sigma=np.std(r,axis=0)\n",
    "    lower_bar= u-1.96*(sigma/(np.sqrt(1)))\n",
    "    upper_bar= u+1.96*(sigma/(np.sqrt(1)))\n",
    "    barWidth = 0.3\n",
    "    bars1=u\n",
    "    rl= np.arange(len(bars1))+1\n",
    "    plt.bar(rl, bars1, width = barWidth, color = 'red', edgecolor = 'black', yerr=1.96*(sigma/(np.sqrt(r.shape[0]))), capsize=7, label=method+' with using 10 multivariate steps for 30 iterations')\n",
    "    plt.ylabel('mean of normalized RMSE for 30 iterations')\n",
    "    plt.xlabel('Number of steps')\n",
    "    plt.legend()\n",
    "    plt.show()\n",
    "    np.savetxt(\"10i_\"+str(r.shape[1])+\"o_\"+method+\"_\"+str(r.shape[0])+\"i\"+str(datetime.datetime.now())+\".csv\", r, delimiter=\",\")\n",
    "# show_results(r1_new)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(29, 10)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "dsgd=read_csv('results/10i_10o_FNN_sgd_30i_colab_with_full.csv')\n",
    "dSGD = dsgd.values\n",
    "print(dSGD.shape)\n",
    "show_results(dSGD,'fnn_sgd')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(1, 10)\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZAAAAEGCAYAAABLgMOSAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nO3deXgUVdr38e8vgCDKiEJkZNEgiuybQRBEQUBRHHAGQRYV1Gd8URFH52HRd1xH53EbF9TRBzdAEVBc4HUcFRQU3DAguzoihB3FBUZQkMD9/lGV2EDSqTTpdELuz3X11V2nTtW5uwl9d9WpOkdmhnPOOVdUaakOwDnnXNnkCcQ551xCPIE455xLiCcQ55xzCfEE4pxzLiEVUx1AMtSsWdMyMjJSHYZzzpUp8+fP/9bM0qPWPygTSEZGBllZWakOwznnyhRJq4tS309hOeecS4gnEOeccwkpNIFIaiCpcvi6s6ThkqonPzTnnHOlWZQjkJeA3ZJOAMYC9YDnkxqVc865Ui9KAtljZjnA74GHzWwEcExyw3LOOVfaRUkguyQNAAYDr4VllZIXknPOubIgSgK5FDgVuNPMVkmqDzyb3LCcc86VdoXeB2Jmy4HhMcurgLuTGZRzzrnSr9AEIqkjcCtwXFhfgJnZ8ckNzTnnXGkW5RTWU8D9wGlAWyAzfD7odO7cGUlFfnTu3PmgaN9jKB3tewylJ4ZUt19aYiiICpuRUNLHZtYu6ZEUo8zMTDuQoUwkUdg8jeFhWMJtHGj7HkPpiSHV7XsMyY8h1e2XVAyS5ptZZtT6UcbCmiXpXuBlYGduoZktSCA+55xzB4koCST36CM2KxlwZvGH45xzrqyIchVWl5IIxDnnXNkSZSysIyTdLykrfPxd0hElEZxzzrnSK8pVWE8DPwL9wsd/gGeSGZRzzrnSL0oCaWBmt5jZyvBxG1DoPSCSnpb0jaSl+5RfI+lzScsk3RNTfoOkFZK+kHR2THmPsGyFpNFFeXPOOeeSJ0oC+VnSabkLCm4s/DnCduOAHrEFkroAvYGWZtYUuC8sbwL0B5qG2/xDUgVJFYBHgXOAJsCAsK5zzrkUi3IV1pXA+LDfQ8D3wJDCNjKz9yRl5LOvu8xsZ1jnm7C8NzA5LF8laQVwSrhuhZmtBJA0Oay7PELczjnnkqjQIxAzW2hmLYEWQHMza21mixJsryHQSdLHkt6VlHtHex1gbUy9dWFZQeX7kXRFbkf/5s2bEwzPOedcVAUegUi6yMyek3T9PuUAmNn9CbZ3FNCeYDiUFyQVy5haZjaWYMIrMjMzk3MrqHPOuTzxTmEdFj5Xy2ddol/Q64CXLbjPfp6kPUBNYD3BTIe56oZlxCl3zjmXQgUmEDP73/DlTDN7P3Zd2JGeiFeBLgTDozQEDgG+BaYDz0u6H6gNnAjMI+hzOVHBHCTrCTraBybYtnPOuWIUpRP9YaBNhLK9SJoEdAZqSloH3EJwT8nT4aW9vwCDw6ORZZJeIOgczwGuNrPd4X6GAW8CFYCnzWxZxPfmnHMuieL1gZwKdADS9+kH+Q3Bl3lcZjaggFUXFVD/TuDOfMpfB14vrD3nnHMlK94RyCHA4WGd2H6Q/wAXJDMo55xzpV+8PpB3gXcljTOz1SUYk3POuTIgSh/IT+F8IE2BKrmFZubDuTvnXDkWZSiTicDnQH3gNiAb+CSJMTnnnCsDoiSQGmb2FLDLzN41s8vwyaScc67ci3IKa1f4vFFST2ADwd3kzjnnyrEoCeSOcCDFPxPc//Eb4LqkRuWcc67Ui5tAwuHUTzSz14CtBHeRO+ecc/H7QMK7wQu6IdA551w5FuUU1vuSHgGmANtzC81sQdKics45V+pFSSCtwufbY8oMvxLLOefKtUITiJl5v4dzzrn9FHofiKRakp6S9K9wuYmky5MfmnPOudIsyo2E4wiGU68dLv8b+FOyAnLOOVc2REkgNc3sBWAPgJnlALuTGpVzzrlSL0oC2S6pBuE0tpLaE9wT4pxzrhyLkkCuJ5hytoGk94EJwPDCNpL0tKRvwtkH9133Z0kmqWa4LEljJK2QtFhSm5i6gyV9GT4GR35nzjnnkirKZbzLgDOAkwjmKP+C6H0njxAknDyS6gFnAWtiis8hmAf9RKAd8BjQTtJRBFPhZhIcAc2XNN3MfojQvnPOuSSKkgg+NLMcM1tmZkvNbBfwYWEbmdl7wPf5rHoAGEl4SizUG5hggY+A6pKOAc4GZpjZ92HSmAH0iBCzc865JIs3J/pvgTrAoZJaExx9QDCYYtVEGpPUG1hvZoskxa6qA6yNWV4XlhVUnt++rwCuADj22GMTCc8551wRxDuFdTYwBKgL3B9T/iNwY1EbklQ13O6som4bhZmNBcYCZGZmWiHVnXPOHaB4c6KPB8ZL6mNmLxVDWw0IZjXMPfqoCyyQdAqwHqgXU7duWLYe6LxP+exiiMU559wBincK6yIzew7IkHT9vuvN7P58NiuQmS0Bjo7ZfzaQaWbfSpoODJM0maATfauZbZT0JvA3SUeGm50F3FCUdp1zziVHvFNYh4XPhyeyY0mTCI4eakpaB9wSTo2bn9eBc4EVwE/ApQBm9r2kv/LrHOy3m1l+HfPOOedKmMwOvu6CzMxMy8rKSnh7SRT2qQhI1mcXpX2PofTEkOr2PYbkx5Dq9ksqBknzzSwzav0ol/E655xz+/EE4pxzLiGeQJxzziUk7lAmks4GzufXm/fWA9PM7I1kB+acc650i3cZ74NAQ4KxrNaFxXWB4ZLOMbNrSyA+55xzpVS8I5BzzazhvoWSphBMKuUJxDnnyrF4fSA7JLXNp7wtsCNJ8TjnnCsj4h2BDAEek1SNX09h1SOYTGpIcsNyzjlX2sUbC2sBwZwcuaPyQjCS7qYSicw551ypFvcy3jB5YGbzCSaA6iCpSUkE5pxzrnQrMIFI+j8EE0d9JOlK4DWgJ/CKpMtLKD7nnHOlVLw+kGFAU+BQYDVwgpltCkfGnQUUNDCic865ciBeAtllZj8BP0n6Krfvw8x+kHTwjcDonHOuSOL1gZikSuHrnrmFkqoUsp1zzrlyIF4i+D0Eoweb2bqY8hrAn5MZlHPOudKvwARiZmvMLCef8vVmNrOwHUt6WtI3kpbGlN0r6XNJiyW9Iql6zLobJK2Q9EU4BldueY+wbIWk0UV7e84555IlmaeixgE99imbATQzsxYEw6HcABBeGtyfoNO+B/APSRUkVQAeBc4BmgAD/DJi55wrHZKWQMzsPeD7fcreijmq+YhgcEaA3sBkM9tpZqsIprY9JXysMLOVZvYLMDms65xzLsUKu5GwgqSJSWr7MuBf4es6wNqYdevCsoLKnXPOpVjcBGJmu4HjJB1SnI1K+r9ADlBsyUnSFZKyJGVt3ry5uHbrnHOuAHEnlAqtBN6XNB3YnltoZvcn0qCkIcB5QFf7deb39QQDNeaqG5YRp3wvZjYWGAuQmZnp96k451ySRUkgX4WPNKDagTQmqQcwEjgjvEkx13TgeUn3A7WBE4F5gIATJdUnSBz9gYEHEoNzzrniUWgCMbPbACQdHi5vi7JjSZOAzkBNSeuAWwiuuqoMzJAE8JGZDTWzZZJeAJYTnNq6Ojx9hqRhwJtABeBpM1tWpHfonHMuKfTrWaQCKkjNgGeBo8Kib4FLSvMXeWZmpmVlZSW8vSQKOwcmoLDPLpntewylJ4ZUt+8xJD+GVLdfUjFImm9mmVHrR7mMdyxwvZkdZ2bHEdyF/kRC0TnnnDtoREkgh5nZrNwFM5sNHJa0iJxzzpUJka7CknQTwWksgIsIrsxyzjlXjkU5ArkMSAdeBl4CaoZlzjnnyrECj0AkPWtmFxN0mA8vwZicc86VAfGOQE6WVBu4TNKRko6KfZRUgM4550qneH0gjwNvA8cD8wmuDstlYblzzrlyKt58IGPMrDHBzXvHm1n9mIcnD+ecK+cK7UQ3sytLIhDnnHNli89t7pxzLiGeQJxzziWkwAQiqVHM68r7rGufzKCcc86VfvGOQJ6Pef3hPuv+kYRYnHPOlSHxEogKeJ3fsnPOuXImXgKxAl7nt+ycc66ciXcjYV1JYwiONnJfEy7XSXpkzjnnSrV4CWREzOt9Z2cqdLYmSU8TzH3+jZk1C8uOAqYAGUA20M/MflAwPeFDwLnAT8AQM1sQbjMY+Eu42zvMbHxhbTvnnEu+AhNIfl/Uko4Etli06a7GAY8AE2LKRgNvm9ldkkaHy6OAcwjmQT8RaAc8BrQLE84tQCbBabP5kqab2Q8R2nfOOZdE8S7jvTn3Ul5JlSW9A3wFfC2pW2E7NrP3gO/3Ke4N5Cam8cD5MeUTLPARUF3SMcDZwAwz+z5MGjOAHtHfnnPOuWSJ14l+IfBF+HowQd9HOnAG8LcE26tlZhvD15uAWuHrOsDamHrrwrKCyvcj6QpJWZKyNm/enGB4zjnnooqXQH6JOVV1NjDZzHab2WdEm8kwrnDfxXY1l5mNNbNMM8tMT08vrt0655wrQLwEslNSM0npQBfgrZh1VRNs7+vw1BTh8zdh+XqgXky9umFZQeXOOedSLF4C+RMwFfgceMDMVgFIOhf4NMH2phOcDiN8nhZTfokC7YGt4amuN4GzwgmtjgTOCsucc86lWLyrsD4CGuVT/jrwemE7ljQJ6AzUlLSO4Gqqu4AXJF0OrAb6hdVfJ7iEdwXBZbyXhm19L+mvwCdhvdvNbN+OeeeccykQb0706+NtaGb3F7J+QAGruuZT14CrC9jP08DT8dpyzjlX8uJ1ht8HLAT+BezEx79yzjkXI14CaQ0MAHoSzIk+ieAmQB8HyznnXNw50ReZ2WgzawU8RXCz33JJvUosOuecc6VWoTMShpfxtgaaE9zI9038LZxzzpUH8TrRLyO4SqoKweW8/czMk4dzzjkgfh/Ik8BSgsttzya4HyNvpZn5qSznnCvH4iWQLiUWhXPOuTIn3o2E7xa0TlLH5ITjnHOurIjXB1KBoA+kDvCGmS2VdB5wI3AoQce6c865cireKaynCAYynAeMkbSBYGKn0Wb2akkE55xzrvSKl0AygRZmtkdSFYL5OxqY2XclE5pzzrnSrLD5QPYAmNkOYKUnD+ecc7niHYE0krQ4fC2gQbgsgvEPWyQ9Ouecc6VWvATSuMSicM45V+bEu4x3dUkG4pxzrmwpdCysZJB0naRlkpZKmiSpiqT6kj6WtELSFEmHhHUrh8srwvUZqYjZOefc3ko8gUiqAwwHMs2sGVAB6A/cTTB17gnAD8Dl4SaXAz+E5Q+E9ZxzzqVYSo5ACE6dHSqpIlAV2AicSTBoI8B44Pzwde9wmXB9V8UOyuWccy4l4t2JvgQocPKoRK/CMrP1ku4D1gA/A28RTFi1xcxywmrrCO6AJ3xeG26bI2krUAP4NpH2nXPOFY94V2GdFz7nzlX+bPg86EAalHQkwVFFfWAL8CLQ40D2Ge73CuAKgGOPPfZAd+ecc64Q8WYkXB1eidXdzEaa2ZLwMRo46wDa7AasMrPNZrYLeBnoCFQPT2kB1AXWh6/XEwypQrj+CGC/GxrNbKyZZZpZZnp6+gGE55xzLooofSCKHX1XUoeI2xVkDdBeUtWwL6MrsByYBVwQ1hkMTAtfTw+XCde/4/OyO+dc6sU7hZXrcuBpSUeEy1uAyxJt0Mw+ljQVWADkAJ8CY4F/ApMl3RGWPRVu8hTwrKQVwPcEV2w555xLMUX9MZ+bQMxsa1IjKgaZmZmWlZWV8PaSCr56ILcOkKwDoSjtewylJ4ZUt+8xJD+GVLdfUjFImm9mmVHrF3oqSlItSU8Bk81sq6Qmki4vbDvnnHMHtyh9GeOAN4Ha4fK/gT8lKyDnnHNlQ5QEUtPMXgByh3bPAXYnNSrnnHOlXpQEsl1SDcKbCiW1B0p9P4hzzrnkinIV1p8JLqVtIOl9IB3om9SonHPOlXqFJhAzmy/pDOAkgg7+L8IbAJ1zzpVjUa7C+gr4LzNbZmZLzWyXpNdKIDbnnHOlWJQ+kF1AF0nP5M7Rwa8DHTrnnCunoiSQn8zsQuAzYI6kY4kzSq9zzrnyIUonugDM7B5JCwiGXz8qqVE555wr9aIkkJtzX5jZTEln8+vghs4558qpeBNKNTKzz4H1ktrss9o70Z1zrpyLdwTyZ+CPwN/zWWcEU9A655wrpwpMIGb2x/C5S8mF45xzrqyIdwrrD/E2NLOXiz8c55xzZUW8U1i/i7POCKaidc45V07FO4V1abIalVQdeBJoRpCMLgO+AKYAGUA20M/MfginvX0IOBf4CRhiZguSFZtzzrloolzGi6SeQFOgSm6Zmd1+AO0+BLxhZheEd7dXBW4E3jazuySNBkYDo4BzgBPDRzvgsfDZOedcCkUZC+tx4ELgGoKbCvsCxyXaYDg17umEc56b2S9mtgXoDYwPq40Hzg9f9wYmWOAjoLqkYxJt3znnXPGIMpRJBzO7BPjBzG4DTgUaHkCb9YHNwDOSPpX0pKTDgFpmtjGsswmoFb6uA6yN2X4d+YzFJekKSVmSsjZv3nwA4TnnnIsiSgL5OXz+SVJtgsEVD+QIoCLQBnjMzFoD2wlOV+WxYEb4Io23ZWZjzSzTzDLT09MPIDznnHNRREkgr4Wd3vcCCwg6uCcdQJvrgHVm9nG4PJUgoXyde2oqfP4mXL8eqBezfd2wzDnnXAoVmkDM7K9mtsXMXiLo+2hkZjcl2qCZbQLWSjopLOoKLCeY9TB3jK3BwLTw9XTgEgXaA1tjTnU555xLkUKvwpJUAehJcHltxbAMM7v/ANq9BpgYXoG1EriUIJm9IOlyYDXQL6z7OsElvCsILuNN2uXFzjnnootyGe//A3YAS4A9xdGomS0EMvNZ1TWfugZcXRztOuecKz5REkhdM2uR9Eicc86VKVE60f8l6aykR+Kcc65MiXIE8hHwiqQ0gkt4RXBm6TdJjcw551ypFiWB3E9w8+CSsD/COeeci3QKay2w1JOHc865WFGOQFYCsyX9C9iZW3iAl/E655wr46IkkFXh45Dw4ZxzzsVPIOFNhNXM7L9LKB7nnHNlRNw+EDPbDXQsoVicc86VIVFOYS2UNB14kWDkXMDnRHfOufIuSgKpAnwHnBlT5nOiO+dcOVdoAknm3OjOOefKrihT2taV9Iqkb8LHS5LqlkRwzjnnSq8oNxI+QzAnR+3w8f/CMuecc+VYlASSbmbPmFlO+BgH+JyxzjlXzkVJIN9JukhShfBxEUGnunPOuXIsSgK5jGB2wE3ARuACimFWwDAZfSrptXC5vqSPJa2QNCWcrRBJlcPlFeH6jANt2znn3IGLMif6ajPrZWbpZna0mZ1vZmuKoe1rgc9ilu8GHjCzE4AfgMvD8suBH8LyB8J6zjnnUizKVVjpkm6UNFbS07mPA2k0vIqrJ/BkuCyC+0ymhlXGA+eHr3uHy4Tru4b1nXPOpVCUGwmnAXOAmcDuYmr3QWAkUC1crgFsMbOccHkdUCd8XYdgSHnMLEfS1rD+t7E7lHQFcAXAscceW0xhOuecK0iUBFLVzEYVV4OSzgO+MbP5kjoX137NbCwwFiAzM9PnLnHOuSSL0on+mqRzi7HNjkAvSdnAZIJTVw8B1SXlJrS6wPrw9XqgHkC4/gj8KjDnnEu5KAnkWoIk8rOk/0j6UdJ/Em3QzG4ws7pmlgH0B94xs0HALIIrvAAGE5w6g+AmxsHh6wvC+n6E4ZxzKRZlLKxqhdUpJqOAyZLuAD4FngrLnwKelbQC+J4g6TjnnEuxKH0gSWNms4HZ4euVwCn51NkB9C3RwJxzzhUqyiks55xzbj8FJhBJ9UsyEOecc2VLvCOQqQCS3i6hWJxzzpUh8fpA0iTdCDSUdP2+K83s/uSF5ZxzrrSLdwTSn+DO84oEd4zv+3DOOVeOFXgEYmZfAHdLWmxm/yrBmJxzzpUBUa7C+kDS/ZKywsffJR2R9Micc86ValESyNPAjwRzgvQD/oNPaeucc+VelBsJG5hZn5jl2yQtTFZAzjnnyoYoRyA/Szotd0FSR+Dn5IXknHOuLIhyBDIUmBDT7/EDvw5u6JxzrpyKMpjiIqClpN+EywmPxOucc+7gEXkwRU8czjnnYvlgis455xLiCcQ551xCIp3CktQByIitb2YTEmlQUj1gAlALMGCsmT0k6ShgSthONtDPzH6QJIIpb88FfgKGmNmCRNp2zjlXfAo9ApH0LHAfcBrQNnxkHkCbOcCfzawJ0B64WlITYDTwtpmdCLwdLgOcA5wYPq4AHjuAtp1zzhWTKEcgmUCT4pqH3Mw2AhvD1z9K+gyoA/QGOofVxhPMVDgqLJ8Qtv+RpOqSjgn345xzLkWi9IEsBX6bjMYlZQCtgY+BWjFJYRPBKS4IksvamM3WhWX77uuK3PG6Nm/enIxwnXPOxVBhBxaSZgGtgHnAztxyM+t1QA1LhwPvAnea2cuStphZ9Zj1P5jZkZJeA+4ys7lh+dvAKDPLKmjfmZmZlpW19+pdu3axbt06duzYUWhsq1ev5rjC6gDHHVdYrcREad9jKD0xpLp9jyH5MaS6/ZKKYf369b+kp6fn/pDfAyzNycn5r5NPPvmb/OpHOYV1a0KRxCGpEvASMNHMXg6Lv849NSXpGCA34PVAvZjN64ZlRbJu3TqqVatGRkYGQb98wbZv307jQva3HWjcuLBaiYnSvsdQemJIdfseQ/JjSHX7JRXD7t27c5o1a/YtwJ49e7R58+YmmzZtehLI94Ahyp3o7yYUSQHCq6qeAj7bZ1bD6QRDpNwVPk+LKR8maTLQDtiaSP/Hjh07IiUP55xzkJaWZunp6Vs3bdrUrMA6he1EUntJn0jaJukXSbslHchd6R2Bi4EzJS0MH+cSJI7ukr4EuoXLAK8DK4EVwBPAVYk27MnDOeeiS0tLM+LkiSinsB4hmN72RYIrsi4BGiYaUNiXUdA3edd86htwdaLtOeecS45INxKa2QpJFcxsN/CMpE+BG5IbWnJl/Pa3rP7662Lb33G1apG9aVOx7c8550q7KJfx/iTpEGChpHskXRdxu1Jt9ddfY1BsjyjJaMyYMTRu3JhBgwYV63vJyckhPT2d0aNH71XeuXNnTjrpJFq0aEGjRo0YNmwYW7Zs2avOq6++iiQ+//zzvLLs7Gzatm3LXx779Z7Nb7dsoVL79gy7554ix5eVlcXw4cMBmD17Nh988EHeuiFDhjB16tQi7zOe6dOnc9dddxVeMYKZM2fStF8/0k45hazly/da9z/PPMMJv/89ffr04c033yyW9vbVq1cvvt2yhS0//sg/Xnwxr3zD5s1cMGpUsbSxYcMGLrjggrh1sjds4Pk33iiW9h588EF++umnYtlXQUaMGEHTpk0ZMWJEQtvPmzePVq1a0apVK1q2bMmsWbPy1r3xwQec1KcPJ/z+99w1bly+2998883MnDkTKP73++rs2SxfufLXth5/nJkff1xs+y+KKIng4rDeMIIO/npAn7hbuHz94x//YMaMGUycOLFY9ztjxgwaNmzIiy++yL6XZU+cOJHFixezePFiKleuTO/evfdaP2nSJE477TQmTZq0V3nt2rX559y5ecsvzpxJ0+OPTyi+zMxMxowZA+yfQJKhV69e+yXTRDVo0ICX77mH01u33qt8+cqVTJ4xg2VTpjBmzBiuuuoqdu/eXSxt5mfLjz/yj5hEWzs9nal3333A+83JyaF27dqFJvHsjRt5vpiSZEkkkLFjx7J48WLuvffeSPVzcnL2Wm7WrBlZWVksXLiQN954g//5n/8hJyeH3bt3c/U99/Cvhx5i+QsvMOmtt/b6Ms91++23061bNyCx9xvvb+nV2bNZvmrVr20NHUq3du2KtP/iUmgCMbPVBH0Wx5jZbWZ2vZmtSH5oB5ehQ4eycuVKzjnnHB544AFuvfVWLrvsMjp37szxxx+f9wWbnZ1N3759+eMdd9C0Xz/OGjaMnwu5d2XSpElce+21HHvssXz44Yf51jnkkEO45557WLNmDYsWLQJg27ZtzJ07l6eeeorJkyfvVb9KlSo0rl8/71f3lBkz6Ne9e777bt68OVu2bMHMqFGjBhMmBMOkXXLJJcyYMYPZs2dz3nnnkZ2dzeOPP84DDzxAq1atmDNnDgDvvfceHTp04Pjjj8/3iyx7wwaaXXhh3vJ9zz7LrWPHAjBm8mT69etHixYt6N+/PwDjxo1j2LBhQHCEM3z48P32v2fPHq666ioaNWpE9+7dOffcc/Ntu379+pyUkbFf+bR336V/9+5UPuQQ6tSpwwknnMC8efP2q3f44Yfn/Rru1q0b8+bNy/s3nz59+n7xApx33nnMnj17r/2MfuQRvlq/nlYDBzLioYf2+kzaX3opX331VV7dzp07k5WVxbx58zj11FNp3bo1HTp04Isvvshrr1evXpx55pl07dqV7OxsmjULLrTJzs6mU6dOtGnThjZt2uQl+9GPPMKcTz+l1cCBPPD88+zevZsRDz1E20suocWAAfzvyy+zr+3bt9OzZ09atmxJs2bNmBIm2w0bNtClSxe6dOkCwFtvvcWpp55KmzZt6Nu3L9u2bQMgIyODkSNH0rx5cwYPHsyKtcH9xC/OnEmzCy+k5cCBnH7FFfu126tXL7Zt28bJJ5/MlClTyM7O5swzz6RFixZ07dqVNWvWAMHfxtChQ2nXrh0jR47cax9Vq1alYsXgDP+OHTvyLsCZt2wZJ9Srx/F163JIpUr0796dae/uf6Fq7pF1Ud/vqFGjaNOmDS+++CJPPPEEbdu2pWXLlvTp04cdO3bwwaJFTJ8zhxFjxtBq4EC+WreOIbfeytS33wbg7XnzGDRoEM2bN+eyyy5j586defu+5ZZbaNOmDc2bN8874/Duu+/mHWm1bt06L5aoolyF9TtgIfBGuNxK0vQiteJ4/PHHqV27NrNmzeK6664D4PPPP+fNN99k3rx53HbbbezatQuAtWvXcnXfvix74QWqV6vGS++8U+B+d+zYwcyZM/nd737HgAED9juSiFWhQgVatmyZ98czbdo0evToQcOGDalRowbz58/fq37/7t2Z/NZbrN20iQppadSuWTPf/UGtZSwAABLPSURBVHbs2JH333+fZcuWcfzxx+clhg8//JAOHTrk1cvIyGDo0KFcd911LFy4kE6dOgGwceNG5s6dy2uvvVbkI4e7xo/nueeeY/HixTz++OP51slv/y+//DLZ2dksX76cZ599tsDEW5D1mzdTr1atvOW6deuyfv3+tydt376dM888k2XLllGtWjX+8pe/MGPGDF555RVuvvnm6O9z2DAa1KnDwuef595rr91r3YXdu+edLtm4cSMbN24kMzOTRo0aMWfOHD799FNuv/12brzxxrxtFixYwNSpU3l3ny+/o48+mhkzZrBgwQKmTJmSd+rxrmHD6NS6NQuff57rBg7kqWnTOOLww/lkwgQ+GT+eJ159db/3/8Ybb1C7dm0WLVrE0qVL6dGjB8OHD8/7fzBr1iy+/fZb7rjjDmbOnMmCBQvIzMzk/vt/vbr/iCOOYMmSJfTr148/heW3P/kkbz78MIuef57pf//7fp/V9OnTOfTQQ1m4cCEXXngh11xzDYMHD2bx4sUMGjQo7z1BcH/YBx98sFebuT7++GOaNm1K8+bNGT16NBUrVtz/371WLdbHGfmiqO+3Ro0aLFiwgP79+/OHP/yBTz75hEWLFtG4cWOmTZtGh5Yt6dWpE/cOH87C55+nQd26edvu2LmTIbfdxt/+9jeWLFlCTk4Oj8Wchq5ZsyYLFizgyiuv5L777gPgvvvu49FHH2XhwoXMmTOHKlWqFPhe8hPlFNatwCnAFgAzWwjUL1IrLl89e/akcuXK1KxZk6OPPpqvw36U2rVr0+qkkwA4uVEjsjcWfNvLa6+9RpcuXTj00EPp06cPr776atzD39hTXJMmTcr71d6/f//9kk+PDh2YMW8ek2fM4MICjj4AOnXqxHvvvcd7773HlVdeyZIlS1i/fj1HHnkkhx12WKGfw/nnn09aWhpNmjTJ+wyianHCCdx0000899xzeb8Yo+x/7ty59O3bl7S0NH7729/m/Tosbocccgg9evQAgiO1M844g0qVKtG8eXOys7OLpY1+3brxdvgL9IUXXsjrz9i6dSt9+/alWbNmXHfddSxbtixvm+7du3PUUUftt69du3bxxz/+kebNm9O3b1+W79Pvk+utjz9mwuuv02rgQNoNGcJ3W7eydu3aveo0b96cGTNmMGrUKObMmcMRRxyx334++ugjli9fTseOHWnVqhXjx49n9erVeesHDBgAwNlnn82HS5YA0LFlS4bcdhtPvPJKpNOGH374IQMHDgTg4osvZm7Mqdm+fftSoUKFfLdr164dy5Yt45NPPmHcuHHs2Lkz33pFUdj7vTDmSHvp0qV06tSJ5s2bM3HiRFbmc6os1herV1O/Tp28u9AHDx7Me++9l7f+D3/4AwAnn3xy3t9ex44duf766xkzZgxbtmwp8P9QQaLU3mVmW/e5h6JYBlYs7ypXrpz3ukKFCnnnYStVqvRreVoaP8f5TzJp0iTmzp1LRnia5bvvvuOdd96hez5f+Lt372bJkiU0btyY77//nnfeeYclS5Ygid27dyNpr3PGh1SqxMmNGvH3555j+QsvMD3mjzHW6aefzqOPPsqaNWu48847eeWVV5g6dWreEUZRPof8htapWKECe2LKd/zyS97rfz74IE98+ikLFizgzjvvZEn4JVOU/SeiTno6a2OS3bp166hTZ78h2qhUqVLe6Y+0tLS8WNLS0vL+vStWrMiePXvytoky3M5esRx9NNWrV2fx4sVMmTIl70jspptuokuXLrzyyitkZ2fTuXPnvG0KSuwPPPAAtWrVYtGiRezZs6fAX6RmxsP//d+cfeqpeWX7ji3UsGFDFixYwOuvv85f/vIXunbtut9Rl5nRvXv3Ao+cY793cl89fsMNfLx0Kf+cO5eTL7mE+RMmUKN69Xy3L0yUHziNGzematWqLP3qq/3/3b/+mjrp6ZHbK+z9xsYzZMgQXn31VVq2bMm4ceMO+GKT3L+92O+a0aNH07NnT15//XU6duzImDFjlHs6M4ooRyDLJA0EKkg6UdLDQHJ7QUvAcbVqISi2x3Exh7UlZdu2bcyZM4c1a9aQnZ1NdnY2jz76aL5/nLt27eKGG26gXr16tGjRgqlTp3LxxRezevVqsrOzWbt2LfXr1887/ZTrz4MGcfc113BUPr8ec9WrV49vv/2WL7/8kuOPP57TTjuN++67j9NPP32/utWqVePHH38s0vusVaMG33z/Pd9t2cLOX37htfAX5J49e1j79ddkZmZy9913s3Xr1sjncDt27MhLL73Enj17+Prrr/frcyhMr9NPZ/KMGez85RfWr1/Pl19+ySmnnFKkfeTKyMhg4cKFwftZuzbfvpRqVavyY5yO2G7dunHPPfewdetWWrRoAQRHILlJbVwBVwvta+vWrRxzzDGkpaXx7LPP5v3Cr1a1Kj9u355X7+z27XnspZfYFX4R/Xv1an7++ee99rVhwwaqVq3KRRddxIgRI1iwIJjGJ/ZvoH379rz//vusWBF0q27fvp1///vfefuYMmUKEPYbNG8OwFfr1tGuWTNuHzqU9OrV9/pCz0+HDh3y+vgmTpwY6YfNqlWr8r5kc/+PZNSuTdsmTfhyzRpWrV/PL7t2MXnGDHrl83ceqyjvN9aPP/7IMcccw65du/a68KbaYYft9W+R66TjjiN7w4a8I8Fnn32WM844I25sX331Fc2bN2fUqFG0bduWVatWFekK2yhHINcA/5dgIMVJwJvAX4vSSGkU756NrKysQic8ySK4uiiVZs+ezZlnnrnXL+zevXszcuTIvM6zQYMGUblyZXbu3Em3bt2YNi0YIWbSpEmM2ucy0D59+uxX3rRBA5o2aFBoLO3atcv7sunUqRM33HADp5122n71fve733HBBRcwbdo0Hn744Ujvs1LFitz8X//FKUOGUOfoo2kUHqLv3rOHi26+mU3btlGlShWGDx9O9Yi/RPv06cPbb79NkyZNqFevHm3atMn3FMusWbM4/7772PzDD/S87jpaNWzImw8/TNMGDejXrRtN+vUjp0IFHn/88QJPhRSmY8eO1K9fnyZNmtC4cWPatGmzX50a1avTsWVLml14Ied06MDVffvutb5r16707NmTm266Ka9s5MiRDB48mDvuuIOePXtGiuWqq66iT58+TJgwgR49euT9Im5x4olBH9rAgQw57zyu7d+f7I0baXPRRZgZ6UceyS3hefVcS5YsYcSIEaSlpVGpUqW88/FXXHEFPXr0yOsbGDduHAMGDMj7m73jjjto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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# dadam=read_csv('10i_10o_FNN_adam_30i.csv2020-07-27 06:17:47.538428')\n",
    "ladam=[[1687.1726 ,1686.9001 ,1684.3483, 1684.8247, 1685.0763 ,1684.6573 ,1684.4218,\n",
    " 1683.5906, 1683.5874 ,1683.9226]]\n",
    "dADAM=np.array(ladam)\n",
    "# dADAM = dadam.values\n",
    "print(dADAM.shape)\n",
    "show_results(dADAM,'fnn_ADAM')\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "9.737489013671875000e+02     831.492899\n",
      "1.210776489257812500e+03    1098.416506\n",
      "1.396545654296875000e+03    1328.846574\n",
      "1.629268066406250000e+03    1479.148566\n",
      "1.761837646484375000e+03    1647.483186\n",
      "1.906840820312500000e+03    1830.260692\n",
      "1.996497192382812500e+03    1945.061860\n",
      "2.214586669921875000e+03    2026.655627\n",
      "2.273685058593750000e+03    2069.030753\n",
      "2.274079101562500000e+03    2070.632467\n",
      "dtype: float64\n",
      "9.737489013671875000e+02    172.169254\n",
      "1.210776489257812500e+03    238.528065\n",
      "1.396545654296875000e+03    341.459996\n",
      "1.629268066406250000e+03    441.491785\n",
      "1.761837646484375000e+03    537.957985\n",
      "1.906840820312500000e+03    637.726564\n",
      "1.996497192382812500e+03    779.544731\n",
      "2.214586669921875000e+03    829.673226\n",
      "2.273685058593750000e+03    826.639030\n",
      "2.274079101562500000e+03    876.282741\n",
      "dtype: float64\n"
     ]
    },
    {
     "data": {
      "image/png": "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fY0cOZKZM2eSk5PDI488UnxMioqKaNWqFVu2bClet23btmzYsIG///3v9OzZky5dunDWWWexIfz7yc/P54orrqBXr15cccUVex3fWbNmcfLJJ9OlSxdOOeUUli5dynfffcfdd9/NpEmTyMnJYdKkSXzzzTcMGzaMHj160KVLFyZPnlzqGK1bt47TTz+dnJwcOnXqxMyZMxk5ciQ7duwgJyeHwYMHA/DXv/6VHj16kJOTw89+9jP27NkDBGdVN998Mx07duTMM89k48aNAIwZM6b43/zSSy8tVe8555zD2rVrycnJYebMmRQWFnLSSSeRnZ3NgAED+PLLL4v/Nm666SZyc3P5v//7v7320aBBg+LLMN98803x82nTpnH22WdzxBFH0KhRI84++2ymTp1aKobYGfO+ft5bb72Vzp078/777zNq1Ci6d+9Op06dGD58OO7Oiy++SEFBAYMHDyYnJ4cdO3aQl5fHP//5TwoKCvj1r3/NcccdR5s2bRgyZAgFBQUUFBRw8MEHM2zYMNq1a8eJJ57ItGnTKCgoYOzYsXTq1InOnTtz+umnl/oc+ypKsphuZg+a2clm1jW2VLlmqRY333wzZ5xxBueddx6PPPLIXl8siVx88cW88MILvPfee3Tt2pWDDjqo1DpZWVkcf/zxLF68mHfffZeuXbsyc+ZMvv32W1avXk3btm2L1z3llFO44IILePDBByksLKRNmzYA7N69m1mzZvG73/2Oe++9N/Ln2rRpEy+//DKLFi1i/vz5/O///m+Z65W1/z/+8Y80atSIxYsX86tf/Yo5c+ZErhdg7dq1tGjx/aABzZs3Z+3aUoMGsHz5cm699VY+/vhjPv74Y5599lneffddHnrooX26PDF69GhOO+00CgsLufnmm4vL69Spw4UXXsjLL78MwIcffkjLli1p0qQJp556Kh988AEfffQRl156KQ888EDxdosXL+bNN99k4sSJe9XTvn17Zs6cyUcffcSoUaO48847OfDAAxk1ahSDBg2isLCQQYMG8etf/5ozzjiDWbNmMX36dG677Ta++eabvfb17LPP0rdvXwoLC5k3bx45OTmMHj2a+vXrU1hYyIQJE1iyZAmTJk3iX//6F4WFhWRlZTFhwgQg+JLOzc1l0aJF9O7du/jfbvTo0Xz00UfMnz+fxx57rNSxmjJlCm3atKGwsJDTTjuNK6+8kvvvv5/58+dz4okn7vU39t1331FQUMCtt95aaj8vv/wy7du3p3///jz11FNA2f/uS5YsKf5Sji3btm1j8eLFXHzxxRx00EE88cQT3HzzzbzwwguMHTuWMWPG8Nprr5X6vD179mTevHmceuqpjBgxgtmzZ7Nw4UJ27NjBq6++ysUXX0xubi4TJkygsLCQ+vXrA9C4cWOOPfZYxo4dy/vvv8/SpUtZvXo1H374IQ0bNmTHjh0MGDCAf//735x33nnMnj2b3NxcHn30UaZNm8a8efOYMqXq9zFH6TobG7Qvvu+tA2dUuXapsquuuoq+ffsydepUJk+ezNixY5k3b16ZX/7xBg4cyKBBg/j444+57LLLeO+998pc77TTTuOdd95hxYoV3HHHHfz5z3+md+/edO/ePVJ8P/rRjwDo1q1bqV/UiRx22GHUq1ePq6++mvPPP3+vs4+K9v/uu+9y4403AsEv+ezs7Mj17ovWrVsXn8nFfiGbGSeeeOI+fdZEBg0axKhRo7jqqqt47rnnGDRoEBB05R40aBDr1q3ju+++26sL5AUXXFD8RRNv69atDBkyhGXLlmFm7Nq1q8w6X3/9daZMmVJ8RrRz507+85//cMIJJxSv0717d4YNG8auXbu46KKLyMnJKbWft956izlz5hT/rezYsYOjjz4aCBJh7LNcfvnlxf+O2dnZDB48mIsuuoiLLroo4bHZunUrW7ZsoXfv3gAMGTKESy65ZK9jV54BAwYwYMAA3nnnHe666y7efPPNMtc79NBDyc3d+7aDhg0bcvDBB9OwYUPq1KlT/P4HH3zAJ598wrXXXlvq82ZlZfHjH/+4eB/Tp0/ngQceYPv27WzevJmOHTvywx/+kPLMnj2bvLw8YkMZDR48mJkzZ3LWWWdx4IEHFv//6NatG2+88QYAvXr1YujQoQwcOLD4+FZFhWcW7t6njEWJIoMce+yxDBs2jMmTJ3PAAQewcOHCCrc55phjqFu3Lm+88QZnnnlmueudfvrpzJw5k1mzZtGvXz+2bNnCjBkzOO200yLFFktaWVlZ7N69u9T7BxxwAEVFRcWvY935DjjgAGbNmsXFF1/Mq6++yrnnnlup/VdGs2bNWL36+4GO16xZQ7NmpUfXj0/IderUKX5dp06d4ljK+3xRnXzyySxfvpyNGzfyyiuvFP+n//nPf86IESNYsGABY8eO3Wu/hxxySJn7uuuuu+jTpw8LFy7k73//e7mxuDsvvfQShYWFFBYWlkoUEPxdvPPOOzRr1oyhQ4eW2enA3RkyZEjxfpYuXUp+fn6ZdcYuBf3jH//g+uuvZ+7cuXTv3r1K/6blHYeSn+PTTz/liy++iPzvXp5En7devXpkZWUBwd/Addddx4svvsiCBQu45pprqnSzb926dYuPX/z/g8cee4z77ruP1atX061bNzZtqlrrQZTeUIeZ2cNmVhAuvzWzw6pUq1SbqVOnFv9CXL9+PZs2bYr8Bz5q1Cjuv//+4j/isvTo0YP33nuPOnXqUK9ePXJychg7dmyZ10AbNmzItm3b9in+li1bsnjxYr799lu2bNnCW2+9BcDXX3/N1q1b6devH4888gjz5s2LvM9evXrx/PPPA8ElmQULFuxTTBdccAHjx4/H3fnggw847LDDaNq0acUblqFVq1bFvanmzp3LihUrSq2T6LiZGQMGDOCWW27hhBNO4MgjjwSCX9Wxf+fyeu2UFL9NrF2orPr79u3L73//+1gHFz766KNS+1q1ahVNmjThmmuu4ac//WnxZ6xbt27x3+OZZ57Jiy++yOeffw7A5s2bWbUqGNS0qKiIF198EQguaZ166qkUFRWxevVq+vTpw/3338/WrVv5+uuvy/08hx12GI0aNSpuq/rLX/5SfJaRyPLly4s/29y5c/n222858sgj6du3L6+//jpffvklX375Ja+//jp9+/ZNuK+onzdeLDEcddRRfP3118XHAcr/W+jRowdvv/02X3zxBXv27GHixIn06NGj1HrxPvnkE3r27MmoUaNo3LjxXomwMqJchnqKYLC/geHrK4Cngaqf18g+2b59+16N2bfccgtr1qzhxhtvpF69egA8+OCDHHPMMZH2d8opp1S4zkEHHUSLFi046aSTgOCy1MSJE8tsSL/00ku55pprGDNmzF7/ARJp0aIFAwcOpFOnTrRu3ZouXYJRZLZt28aFF17Izp07cXcefvjhCvb0veuuu44hQ4bQoUMH2rdvT8eOHTnssNK/b8aMGcMDDzzA+vXryc7Opl+/fjzxxBP069eP1157jeOOO46DDz6Yp59+OnLdJf34xz9m/PjxdOzYkZ49e9KuXbtS62RnZ5OVlUXnzp0ZOnRo8TGIGTRoEN27d9/rCz4/P59LLrmE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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# dlstm=read_csv('10i_10o_LSTM_30i.csv2020-05-10 11:03:02_243465.csv')\n",
    "# dLSTM = dlstm.values\n",
    "dLSTM=read_csv('results/10i_10o_LSTM_30i2020-07-30_colab_with_full.csv')\n",
    "print(np.mean(dLSTM))\n",
    "print(np.std(dLSTM))\n",
    "show_results(dLSTM,'LSTM')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(9, 10)\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYsAAAEGCAYAAACUzrmNAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nO3deZwU1dn3/8/FsArILrswUXYYBhwWJbKIW9CoaNxuVECjiQGXaFTMcxtQufPDJXqHxMS4AS5R3EVjFPWRxYUHRhwFUQRFFGSTAWQdBub6/dHVnWaWnmKgpxvm+3696jXdp6vqXF3TM1efOlXnmLsjIiKSSLVUByAiIulPyUJERMqlZCEiIuVSshARkXIpWYiISLmqpzqAZGjatKm3b98+1WGIiBxSPvroox/cvVlprx2WyaJ9+/bk5uamOgwRkUOKma0s6zWdhhIRkXIpWYiISLnKTRZmdoyZ1QoeDzaza82sYfJDExGRdGHlDfdhZnlADtAeeB14BeiWm5s7qnr16o8A3UmzFsrGjRvbtWzZMtVhiIikpdq1a9OmTRtq1KixT7mZfeTuOaVtE6aDu8jd95jZcOAv7v4XM/u4evXqj7Ro0aJLs2bNNlWrVi2tBphasmRJuy5duqQ6DBGRtOPubNy4kVWrVpGZmRl6uzAtgkIzuxgYCbwWlNUAujdr1uzHdEsUIiJSNjOjSZMm7Nq1a7+2C5MsRgPHA//j7ivMLBN4AqimRCEicugxs/3eptxk4e5L3P1ad386eL7C3e+qQHwiInKICnM11AAze8vMvjSzr81shZl9XXy9Nk2b9jSz4w7W0qZp057lxZaRkXFc586du0aX3//+9y0qeiDKM3XqVMaOHXtA+xg1ahSZmZn07NmTjh07ctlll7Fq1aqDFGHpBg8enNQbFGfMmMGkSZMAePnll1myZElS637wwQd5/PHHD8q+/vrXv3LsscdiZvzwww+xcnfn2muv5dhjjyUrK4uFCxcelPqKq1evHgDffPMN//znP2Plubm5XHvttQeljjD7ysvL4/XXXz8o9f3xj388KPtJ5OKLLyYrK4v777+/Qtu/8sorZGVlkZ2dTU5ODu+9917stWnTptGhQwc6dOjAtGnTSt3+l7/8ZexzfrDf79SpU/n+++9LrSvl3D3hAnwB/Aw4CmgSXfLy8r5x99zoArgfxCUS2n/2X9pSp06dvaWVf/bZZ36wTZkyxceMGRN6/cLCwhJlI0eO9Oeee87d3YuKivy+++7zDh06eEFBwUGLs7hBgwb5ggULQq+/Z8+eCtcV//4qUndlW7hwoa9YscLbtWvnGzZsiJX/61//8tNPP92Lior8ww8/9L59+yal/rp167q7+7vvvutnnHHGQd9/aZ/B0uzvZzuR6HtKljVr1vgxxxyzX9sUPw5bt271oqIid3f/5JNPvFOnTu7uvnHjRs/MzPSNGzd6fn6+Z2Zmen5+fsJ9V+T9JvobK+1vZvXq1b5gwYL9XlavXp0wjiVLlpQoA3K9jFwQps9ii7v/293Xu/vG6JKk3HVQnHLKKYwfP57evXvTo0cPvvjiCwC2bdvG6NGj6dGjB1lZWbzwwgsAPP300/To0YPu3btzyy23xPYzZcoUOnbsSN++fXn//fdj5Rs2bOC8886jT58+9OnTJ/bahAkTuPTSSxkwYACXXnppwhjNjN/+9re0aNGCf//73wDMnDmT448/nt69e3P++eezbds2ABYsWMAJJ5xAz5496du3L1u3bmXXrl2x99KrVy/effddAHbu3MlFF11Ely5dGD58ODt37ozVWdb+27dvzy233ELv3r157rnnYuvv3buXzMxM3J3NmzeTkZHBnDlzABg4cCDLli2Ltbg++OADZsyYwU033UR2djZfffUVAM899xx9+/alY8eOzJ07t8RxmDVrFmeeeWbs+dixY5k6dSoA48aNo2vXrmRlZfG73/0udozvvfdeINJyueWWW0rsf8eOHVxwwQV07dqV4cOH069fv1JbOL169aK0McReeeUVLrvsMsyM/v37s3nzZtasWbPPOt988w2dO3dm1KhRdOzYkREjRvD2228zYMAAOnTowPz580vEC9C9e3e++eabffY1btw45s6dS3Z2Nvfff3/smBQVFdG+fXs2b94cW7dDhw6sW7eOV199lX79+tGrVy9OPvlk1q1bF6sv/jMYf3znz5/P8ccfT69evTjhhBNYunQpu3fv5g9/+APTp08nOzub6dOns337di6//HL69u1Lr169eOWVV0ocozVr1jBw4ECys7Pp3r07c+fOZdy4cezcuZPs7GxGjBgBwJNPPknfvn3Jzs7mV7/6FXv37gUirarf/va3dOvWjaFDh7JhwwYAJk+eHPudX3TRRSXqPfXUU1m9ejXZ2dnMnTuXvLw8+vfvT1ZWFsOHD2fTpk2xz8b1119PTk4Of/7zn/fZR7169WLn7Ldv3x57/Oabb3LKKafQuHFjGjVqxCmnnMIbb7xRIoZoi3l/3++NN95Iz549+fDDD7njjjvo06cP3bt356qrrsLdef7558nNzWXEiBFkZ2ezc+dOBg8ezPfff09OTg7Lli1j9OjRjBo1iueee4769etTv359Bg8ezEsvvcQVV1zB2LFjadu2LTk5Obz//vt0796dnj17MnDgwBLvY7+VlUWiCzAJuIdIJ3fv6JIOLYtq1ap5p06ddkSXhx566Ct3z23VqpVPnjzZ3d0feOABv+KKK9zd/eabb/brrrsulkXz8/N99erV3rZtW1+/fr0XFhb6kCFD/KWXXvLvv/8+Vl5QUOAnnHBC7NvXxRdf7HPnznV395UrV3rnzp3d3X38+PHeu3dv37FjR6mZvPg3b3f36667zidNmuQbNmzwE0880bdt2+bu7pMmTfLbb7/dCwoKPDMz0+fPn+/u7lu2bPHCwkK/9957ffTo0e7u/vnnn3vbtm19586d/qc//SlW/sknn3hGRoYvWLCgzP27u7dr187vuuuuUmM+7bTTfPHixf7qq696Tk6OT5w40Xft2uXt27d3932/lZbWsrjhhhvcPfJtfejQoSX2X/xb9ZgxY3zKlCn+ww8/eMeOHWPfADdt2hQ7xvfcc0/C/d9zzz1+1VVXubv7okWLYsegLMVbFmeccUbs9+vuftJJJ5XYfsWKFZ6RkeGffvqp792713v37u2jR4/2oqIif/nll/3ss88uEa+7e7du3XzFihXuXnbLIv75tdde64899pi7u8+bNy/2HvPz82PH5uGHH44dh+Kfwfh9RT877u5vvfWWn3vuue5esmVx6623+hNPPBE77h06dIh9bqLuvfdenzhxortHvin/+OOP+7wn98g31zPPPNN3797t7u5XX321T5s2zd3dAX/yySfd3f3222+P1d+yZUvftWtXrO7iVqxY4d26dYs979Gjh8+aNcvd3W+77bbY3/egQYP86quvLrF91IsvvuidOnXyRo0a+QcffODukc/NnXfeGVvnjjvu2Od3FxX/7X9/3u/06dNj627cuDH2+JJLLvEZM2aU2Hf889L+T/31r3/1L774woHY9jfddFPs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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# den=read_csv('10i_10o_EN_DC_30i.csv2020-05-10 15:40:39_077980.csv')\n",
    "lEN=[[1014.09717\n",
    "   ,1096.8276   \n",
    "   ,1279.9148   \n",
    "   ,1382.6143   \n",
    "   ,1512.9702   \n",
    "   ,1572.573    \n",
    "   ,1600.8066   \n",
    "   ,1588.4052   \n",
    "   ,1612.1232   \n",
    "   ,1616.752    ]\n",
    "\n",
    "  ,[ 757.4399   \n",
    "   , 930.22424  \n",
    "   ,1036.9641   \n",
    "   ,1109.3658   \n",
    "   ,1133.0293   \n",
    "   ,1150.7404   \n",
    "   ,1158.7914   \n",
    "   ,1166.9806   \n",
    "   ,1185.018    \n",
    "   ,1190.5941   ]\n",
    "\n",
    "  ,[ 775.08636  \n",
    "   , 942.4178   \n",
    "   ,1010.3597   \n",
    "   ,1034.468    \n",
    "   ,1058.1713   \n",
    "   ,1063.81     \n",
    "   ,1068.8236   \n",
    "   ,1100.0187   \n",
    "   ,1115.5554   \n",
    "   ,1128.249    ]\n",
    "\n",
    "  ,[1018.1749   \n",
    "   ,1563.2941   \n",
    "   ,2030.67     \n",
    "   ,2352.331    \n",
    "   ,2661.1892   \n",
    "   ,2906.9456   \n",
    "   ,3111.359    \n",
    "   ,3356.0059   \n",
    "   ,3626.9895   \n",
    "   ,3805.0383   ]\n",
    "\n",
    "  ,[ 756.4015   \n",
    "   ,1043.1024   \n",
    "   ,1247.2255   \n",
    "   ,1423.5332   \n",
    "   ,1487.0222   \n",
    "   ,1534.9841   \n",
    "   ,1565.8169   \n",
    "   ,1581.6118   \n",
    "   ,1591.4827   \n",
    "   ,1609.5292   ]\n",
    "\n",
    "  ,[ 829.8609   \n",
    "   ,1039.5664   \n",
    "   ,1176.5208   \n",
    "   ,1239.3933   \n",
    "   ,1308.8772   \n",
    "   ,1313.2029   \n",
    "   ,1332.2471   \n",
    "   ,1330.4106   \n",
    "   ,1351.6486   \n",
    "   ,1344.2048   ]\n",
    "\n",
    "  ,[ 888.4945   \n",
    "   ,1104.9935   \n",
    "   ,1189.066    \n",
    "   ,1213.6727   \n",
    "   ,1325.7197   \n",
    "   ,1351.2096   \n",
    "   ,1352.8827   \n",
    "   ,1390.7533   \n",
    "   ,1384.2114   \n",
    "   ,1389.5021   ]\n",
    "\n",
    "  ,[ 728.02167  \n",
    "   ,1132.3594   \n",
    "   ,1609.9431   \n",
    "   ,2213.8728   \n",
    "   ,2719.472    \n",
    "   ,3163.1084   \n",
    "   ,3365.4978   \n",
    "   ,3516.4995   \n",
    "   ,3627.315    \n",
    "   ,3698.2275   ]\n",
    "\n",
    "  ,[ 749.18286  \n",
    "   ,1090.0675   \n",
    "   ,1309.3542   \n",
    "   ,1423.8892   \n",
    "   ,1514.3691   \n",
    "   ,1572.8219   \n",
    "   ,1577.1084   \n",
    "   ,1606.3649   \n",
    "   ,1640.387    \n",
    "   ,1662.8898]] \n",
    "\n",
    "\n",
    "dEN=np.array(lEN)\n",
    "# dEN = den.values\n",
    "print(dEN.shape)\n",
    "show_results(dEN,'Encoder-Decoder')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(22, 10)\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAY4AAAEGCAYAAABy53LJAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nO3deXhU5dn48e+dEEAWUSCyRQnImoQkQNhEBEUKCkXqglgXEBVtRWzLi9pWMW7vq3X9UbdaF9RaQVCEWqsiZXEtBotsgmxBWYSwhT3r/fvjnBmHZJLMCZPMhNyf6zrXzHnOds9kec6znOcRVcUYY4wJVUykAzDGGFOzWMZhjDHGE8s4jDHGeGIZhzHGGE8s4zDGGONJnUgHUNWaN2+uiYmJkQ7DGGNqlGXLlu1W1fhg2076jCMxMZGsrKxIh2GMMTWKiGwpa5tVVRljjPHEMg5jjDGeeMo4RORsEannvh8kIpNE5LSqCc0YY0w0kvKGHFm2bNkZderUeRFIAWJycnJax8fH7ygsLIzdu3dvi/r16x8pKCiIa9as2a5qi9ijPXv2tG3VqlWkwzDGmKhUv359EhISiIuLOy5dRJapakawY8ptHK9Tp86LLVu27BofH78vJiZGV61aFZ+SkpKzbdu2Fq1bt97RqlWrXatWrUpKSUnZHcbPEVZr1qxp27Vr10iHYYwxUUdV2bNnD1u3bqVdu3YhH1dRVVVKfHz8gZiYGAUQEc3JyWm6d+/e5qeddtp+98JS+bCNMcZEiojQrFkzjh075um4ijKOGF+mAZCYmJh96NChhi1bttxxyimn5B89erTu6aefvqcyARtjjIk8Ee/3/p6e42jYsOGxdu3a/eBbP+WUU/ITEhJ+9HxVY4wxNZanXlUJzZuni0jPcC0JzZunVXTN2NjYnl26dEnq3LlzUlJSUtf58+c3BMjOzo4bNmxY+4qO/8Mf/sDs2bMBuPHGG1mzZo2XjxxUdnY2f//73/3rWVlZTJo06YTPW1JiYiK7d5duPgqWvnPnTkaMGEFaWhpJSUlcfPHFrFy5kvT0dNLT02natCnt2rUjPT2dCy+8kOzsbESEu+++23+O3bt3ExcXx8SJEz3HGvgdLFq0iM8//9y/bdy4cf6fQbjMmzePhx9+OCznmjVrFsnJycTExJR6WPT//u//6NChA507d+bDDz8My/VK8v089+/fz7PPPutP3759O5dffnlYrhHKuUr+Xp+Ip556iiNHjoTlXGWZMmUKycnJTJkypVLHL1261P/3kZaWxpw5c/zbPvjgAzp37kyHDh3K/D2bOnUqH3/8MRD+z/vuu+8e978q8FpRQVXLXJYvX56tqlm+BVAN4+Jc/qfzB1tOOeWUIt/72bNnf5eRkXGwomMCl0suuURnzZql5SksLCx3e0kLFy7U4cOHezqmMtq2bas5OTkhpU+YMEGfeuop//o333xz3PaxY8ce9z1s3rxZ27Vrp+np6f60Z599VtPS0vTWW289objvvfdeffTRR8u8drRZs2aNrl27VgcOHKhfffWVP3316tWampqqx44d002bNmn79u09/66Ewvfz3Lx5syYnJ4f9/AUFBSHtF87f67J+d8Pp1FNP9fTzKPk9HD582J+2fft2jY+P14KCAi0sLNT27dvrxo0bNS8vT1NTU3X16tW6bds2/eqrr4IurVq10vnz5wfdtm3btqDxlBd7df/NrFmzplQakKVl5A016gHA3Nzc2CZNmhQCrFu3rm7Hjh2TS+5TXFzMddddd1ZiYmLKOeec02nv3r3+bYMGDfLfUTZq1IjJkyeTlpbGF198wbJlyxg4cCA9e/Zk6NCh7NixA4ANGzZw4YUXkpaWRo8ePdi4cSN33XUXn3zyCenp6Tz55JMsWrSIESNGALB3715GjRpFamoqffv2ZcWKFQBkZmYyfvx4Bg0aRPv27Zk2bZo/rlGjRtGzZ0+Sk5N54YUXKvXd7Nixg4SEBP96ampqhcc0aNCArl27+r+TmTNnMnr06KD7duvWjf3796OqNGvWjNdeew2A6667jvnz5/u/g+zsbJ5//nmefPJJ0tPT+eSTTwBYsmQJ55xzDu3btw9a+sjOziYlJcW//thjj5GZmQnAtGnTSEpKIjU1lTFjxgAwffp0f8lo3LhxTJo0qdT5i4uL+fWvf02XLl0YMmQIF198cdBrd+3alc6dO5dKnzt3LmPGjKFevXq0a9eODh06sHTp0lL7NWrUyH/3e+GFF7J06VL/z3nevHml4gUYMWIEixYtOu48d911Fxs3biQ9PZ0pU6Yc95307duX1atX+/f1/S4vXbqUfv360b17d8455xzWrVvnv97IkSO54IILGDx48HHnys7OZsCAAfTo0YMePXr4S4clf6+LioqYMmUKvXr1IjU1lb/85S+lPvvhw4cZPnw4aWlppKSkMHPmTKZNm8b27ds5//zzOf/88wH46KOP6NevHz169OCKK67g0KFDgFPauuOOO+jWrRu9e/dmw4YNgFMKTElJIS0tjfPOO6/UdUeOHMmhQ4fo2bMnM2fOJDs7mwsuuIDU1FQGDx7M999/Dzi/G7fccgt9+vThjjvuOO4cDRo0oE4dp7b+2LFj/rr+pUuX0qFDB9q3b0/dunUZM2YMc+fOpXXr1mRkZPiXp59+muzsbObMmcPu3bv57W9/y5QpU8jIyGDv3r3cdtttTJgwgdtvv/24z3vnnXfSo0cPZs2axV//+ld69epFWloal112GUeOHOHzzz9n3rx5TJkyhfT0dDZu3HhcqX3BggV0796dbt26MX78ePLy8vznvvfee+nRowfdunVj7dq1ACxevNhfsurevTsHDx4s9X16VlaOolFS4oiJidHOnTsfSUxMPNqoUaPCJUuWrFHVrLVr167o0KHD0ZL7T58+fUO/fv1yCwoKsjZv3vxN48aN/Tl34B0loDNnzlRV1fz8fO3Xr5/u2rVLVVVnzJih119/vaqq9u7dW9955x1VVT169KgePny41J1Z4PrEiRM1MzNTVVUXLFigaWlpqurchffr10+PHTumOTk52rRpU83Pz1dV1T179qiq6pEjRzQ5OVl3796tqt5KHB988IE2adJEBw0apA8++GCpu5xgJY7k5GSdO3euTp48Wb///nu94IIL9JVXXgla4rj55pv1vffe05UrV2pGRobeeOONqqraoUMHPXTo0HHfQbASx+WXX65FRUW6evVqPfvss0udv+Td9qOPPqr33nuvqqq2atVKjx07pqqq+/btU1U9Ls6yzj9r1iy96KKLtKioSHfs2KGnnXZauXdxJUsct956q77++uv+9fHjxwc9HtD3339fVVVHjRqlQ4YM0fz8fF2+fLn/51/yex0+fLguXLhQVcsucQSuP/HEEzp16lRVde6OO3XqpKqqubm5/rvm+fPn66WXXuq/Xps2bfy/W4HnOnz4sB49elRVVb/77jvt2bOnqpYucfzlL3/RBx54QFVVjx07pj179tRNmzYd99lnz57t/11QVd2/f/9xn0lVNScnRwcMGKCHDh1SVdWHH35Y77vvPv9+Dz74oKqqvvrqq/7rp6Sk6NatW1X1p595SQ0bNvS/HzFihE6fPl1VVV966SW95JJLVNX53Rg+fHiZd/dffvmlJiUlacOGDf1/57NmzdIbbrjBv89rr70W9G/C9ze1du1abd26dcif95FHHvGfw/e3rqr6xz/+UadNm3bcuUte6+jRo5qQkKDr1q1TVdVrr71Wn3zySf+5fcc/88wz/s8wYsQI/fTTT1VV9eDBg0FLoF5LHFE/yGG9evWK165duwbg448/bnj99de3++6771aXtf/ixYsbjx49em+dOnVITEws6NOnT9D9YmNjueyyywBYt24dq1atYsiQIQAUFRXRqlUrDh48yLZt2/jFL34BOA/KVOTTTz/l7bffBuCCCy5gz549HDhwAIDhw4dTr1496tWrxxlnnMHOnTtJSEhg2rRp/vrVH374gfXr19OsWbPQviDX0KFD2bRpEx988AH/+te/6N69O6tWrSI+Pujgln7Dhg3jnnvuoUWLFlx55ZVl7jdgwACWLFlC27Zt+dWvfsULL7zAtm3bOP3002nYsGGF8Y0aNYqYmBiSkpLYuXOnp8+WmprK1VdfzahRoxg1alTI5//000+54ooriImJoWXLlv6733CrW7cuw4YNA5ySWb169YiLi6Nbt25kZ2eH5RqjR4/mZz/7Gffddx9vvfWWv70iNzeXsWPHsn79ekSEgoIC/zFDhgyhadOmpc5VUFDAxIkTWb58ObGxsXz33XdBr/nRRx+xYsUK/51ubm4u69evP66/f7du3Zg8eTJ33nknI0aMYMCAAaXO8+WXX7JmzRr69+8PQH5+Pv369fNvv+qqq/yvv/3tbwHo378/48aNY/To0Vx66aUVfj9ffPEF77zzDgDXXnvtcaWLK664gtjY2KDH9enTh9WrV/Ptt98yduxYLrroogqvVZGKPm/g39mqVau4++672b9/P4cOHWLo0KHlnvuTTz4hPj6eAwcOkJWVRd++fZk1axbnnnsu+fn5nH322WRlZdGgQQNWrFhBVlYWbdu25bbbbmPcuHFceumlx9VMVFbUZxyBLrzwwsP79u2rs2PHjhOOu379+v5fJlUlOTmZL7744rh9wlKkC1CvXj3/+9jYWAoLC1m0aBEff/wxX3zxBQ0aNGDQoEGe+1T7NG3alF/+8pf88pe/ZMSIESxZssSfOZalbt269OzZk8cff5w1a9b4q1ZK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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# dbi=read_csv('10i_10o_bi_LSTM_30i.csv2020-05-10 12:29:07_591213.csv')\n",
    "# dBI = dbi.values\n",
    "lBI=[[ 969.8882 ,1277.1731, 1468.2672 ,1460.928,  1623.5724 ,1763.8987, 1722.036,\n",
    " 1803.5625, 1866.8588, 1810.4342],\n",
    " [ 722.07574  ,907.8592  , 979.9934  , 989.2812 , 1046.334 ,  1075.9742,\n",
    " 1070.3185 , 1091.0967 , 1112.3413 , 1115.5602 ],\n",
    " [ 801.807  ,1034.9629 ,1161.4736, 1143.9906, 1209.6346 ,1305.8185, 1254.114,\n",
    " 1274.3093 ,1290.1375,1268.6793],\n",
    "[1028.353,1204.5212,1479.6134,1431.6039,1633.4913,1922.2136,1948.435\n",
    ",1985.9891,2140.9133,2122.976],\n",
    "[1640.4698,1639.1353,1635.2411,1632.848, 1590.988, 1560.6129,1545.1003\n",
    ",1518.921, 1497.6561,1486.8616],\n",
    " [ 803.1738, 950.8526, 973.8418,1005.184 ,1068.7042,1067.9929,1085.2499\n",
    ",1107.6813,1073.0375,1044.332 ],\n",
    " [ 622.2253,884.546, 1078.7385,1064.9238,1162.4537,1252.4735,1217.9684\n",
    ",1252.9532,1303.0397,1276.6715],\n",
    " [ 710.741,  1013.4251, 1342.9054 ,1404.4167, 1698.2084, 1915.8339 ,1913.4025,\n",
    " 2021.1522, 2025.5703, 1920.388 ],\n",
    " [ 591.4624  , 890.172  , 1045.6573,   988.75525, 1081.7245 , 1156.774,\n",
    " 1120.539  , 1164.5605  ,1182.0413 , 1154.1305 ],\n",
    " [ 698.86774 , 898.51746 ,1082.5911 , 1082.691  , 1208.7532 , 1332.6791,\n",
    " 1315.3162 , 1370.0671 , 1423.0651 , 1388.4113 ],\n",
    " [ 999.38367, 1013.37823 ,1022.23456 ,1045.7749 , 1059.6359 , 1074.2949,\n",
    " 1091.809 ,  1120.1884 , 1106.2554 , 1143.2104 ],\n",
    " [ 968.32666 ,1159.3184  ,1506.1672 , 1663.4293 , 1962.8079 , 2393.0796,\n",
    " 2602.024 ,  2801.4094 , 3021.4868,  2895.3755 ],\n",
    " [1335.7046 ,1515.6743 ,1647.6761, 1637.5294, 1726.7198 ,1741.4196 ,1723.0867,\n",
    " 1746.9054 ,1694.588 , 1703.4254],\n",
    " [1100.119 , 1190.7557 ,1201.6648, 1201.4407, 1229.0417 ,1248.3105 ,1241.4988,\n",
    " 1239.6946, 1244.5979, 1251.8176],\n",
    " [ 972.96387, 1260.2777 , 1630.9681 , 1739.5829 , 2401.7537 , 2788.5112,\n",
    " 2800.4077 , 3072.7712 , 3211.6577 , 3189.779  ]\n",
    " ,[ 588.7389  ,845.2258 , 984.9668 ,1009.2586, 1128.3372 ,1195.3469, 1210.5182,\n",
    " 1233.4716, 1253.8915, 1243.0809],\n",
    " [1643.3947 ,1643.8   , 1619.8284, 1622.4832, 1605.4521 ,1604.2609, 1623.4614,\n",
    " 1627.3331, 1583.3892, 1562.5248],\n",
    " [ 629.9717 ,  908.1765 , 1014.37274, 1110.196 ,  1276.8256  ,1556.8937,\n",
    " 1625.3396,  1802.9414,  1817.1638 , 1864.8885 ],\n",
    " [ 648.41754 , 990.9563 , 1217.7239 , 1223.3944 , 1408.6141 , 1533.6177,\n",
    " 1518.2731,  1583.1321 , 1630.8342 , 1579.0361 ],\n",
    " [ 946.0659, 1064.5934, 1110.7546, 1124.073 , 1166.2177, 1181.4332 ,1171.2883,\n",
    " 1178.2885 ,1190.9132 ,1191.2386],\n",
    "[ 695.27234 , 941.598 ,  1154.9465,  1214.4712 , 1387.8839,  1536.0145,\n",
    " 1558.7074 , 1673.5553 , 1744.5549  ,1712.1752 ],\n",
    "[ 858.5309 , 1014.39746 ,1080.8525 , 1096.9081 , 1139.7615 , 1152.6874,\n",
    " 1140.2477,  1150.6006  ,1164.087  , 1175.7429 ]]\n",
    " \n",
    "dBI=np.array(lBI)\n",
    "print(dBI.shape)\n",
    "show_results(dBI,'Bi directional LSTM')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(1, 10)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "def show_results_Combined(r1,r2,r3,r4):\n",
    "    x = datetime.datetime.now()\n",
    "    print(r1.shape)\n",
    "    u1=np.mean(r1,axis=0)\n",
    "    u2=np.mean(r2,axis=0)\n",
    "    u3=np.mean(r3,axis=0)\n",
    "    u4=np.mean(r4,axis=0)\n",
    "#     u5=np.mean(r5,axis=0)\n",
    "    sigma1=np.std(r1,axis=0)\n",
    "    sigma2=np.std(r2,axis=0)\n",
    "    sigma3=np.std(r3,axis=0)\n",
    "    sigma4=np.std(r4,axis=0)\n",
    "#     sigma5=np.std(r5,axis=0)\n",
    "#     lower_bar= u-1.96*(sigma/(np.sqrt(r.shape[0])))\n",
    "#     upper_bar= u+1.96*(sigma/(np.sqrt(r.shape[0])))\n",
    "    barWidth = 0.17\n",
    "    bars1=u1\n",
    "    bars2=u2\n",
    "    bars3=u3\n",
    "    bars4=u4\n",
    "#     bars5=u5\n",
    "    ra1= np.arange(len(bars1))+1\n",
    "    ra2 = [y + barWidth for y in ra1]\n",
    "    ra3 = [y + barWidth for y in ra2]\n",
    "    ra4 = [y + barWidth for y in ra3]\n",
    "#     ra5 = [y + barWidth for y in ra4]\n",
    "\n",
    "#     plt.bar(ra1, bars1, width = barWidth, color = 'red', edgecolor = 'black', yerr=1.96*(sigma1/(np.sqrt(r1.shape[0]))), capsize=7, label='FNN_Sgd')\n",
    "    plt.bar(ra1, bars1, width = barWidth, color = 'blue', edgecolor = 'black', yerr=1.96*(sigma1/(np.sqrt(r1.shape[0]))), capsize=7, label='FNN_ADAM')\n",
    "    plt.bar(ra2, bars2, width = barWidth, color = 'yellow', edgecolor = 'black', yerr=1.96*(sigma2/(np.sqrt(r2.shape[0]))), capsize=7, label='LSTM')\n",
    "    plt.bar(ra3, bars3, width = barWidth, color = 'green', edgecolor = 'black', yerr=1.96*(sigma3/(np.sqrt(r3.shape[0]))), capsize=7, label='Bi LSTM')\n",
    "    plt.bar(ra4, bars4, width = barWidth, color = 'red', edgecolor = 'black', yerr=1.96*(sigma4/(np.sqrt(r4.shape[0]))), capsize=7, label='Encoder Decoder LSTM')\n",
    "    \n",
    "\n",
    "    plt.ylabel('mean of RMSE for 30 iterations')\n",
    "    plt.xlabel('Number of steps')\n",
    "    plt.legend()\n",
    "    plt.show()\n",
    "#     np.savetxt(\"10i_\"+str(r.shape[1])+\"o_\"+method+\"_\"+str(r.shape[0])+\"i\"+str(datetime.datetime.now())+\".csv\", r, delimiter=\",\")\n",
    "show_results_Combined(dADAM,dLSTM,dBI,dEN)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "def show_results_Combined(r1,r2,r3,r4):\n",
    "    x = datetime.datetime.now()\n",
    "    print(r1.shape)\n",
    "    u1=np.mean(r1,axis=0)\n",
    "    u2=np.mean(r2,axis=0)\n",
    "    u3=np.mean(r3,axis=0)\n",
    "    u4=np.mean(r4,axis=0)\n",
    "#     u5=np.mean(r5,axis=0)\n",
    "    sigma1=np.std(r1,axis=0)\n",
    "    sigma2=np.std(r2,axis=0)\n",
    "    sigma3=np.std(r3,axis=0)\n",
    "    sigma4=np.std(r4,axis=0)\n",
    "#     sigma5=np.std(r5,axis=0)\n",
    "#     lower_bar= u-1.96*(sigma/(np.sqrt(r.shape[0])))\n",
    "#     upper_bar= u+1.96*(sigma/(np.sqrt(r.shape[0])))\n",
    "    barWidth = 0.17\n",
    "#     bars1=u1\n",
    "#     bars2=u2\n",
    "#     bars3=u3\n",
    "#     bars4=u4\n",
    "# #     bars5=u5\n",
    "#     ra1= np.arange(len(bars1))+1\n",
    "#     ra2 = [y + barWidth for y in ra1]\n",
    "#     ra3 = [y + barWidth for y in ra2]\n",
    "#     ra4 = [y + barWidth for y in ra3]\n",
    "# #     ra5 = [y + barWidth for y in ra4]\n",
    "\n",
    "# #     plt.bar(ra1, bars1, width = barWidth, color = 'red', edgecolor = 'black', yerr=1.96*(sigma1/(np.sqrt(r1.shape[0]))), capsize=7, label='FNN_Sgd')\n",
    "#     plt.bar(ra1, bars1, width = barWidth, color = 'blue', edgecolor = 'black', yerr=1.96*(sigma1/(np.sqrt(r1.shape[0]))), capsize=7, label='FNN_ADAM')\n",
    "#     plt.bar(ra2, bars2, width = barWidth, color = 'yellow', edgecolor = 'black', yerr=1.96*(sigma2/(np.sqrt(r2.shape[0]))), capsize=7, label='LSTM')\n",
    "#     plt.bar(ra3, bars3, width = barWidth, color = 'green', edgecolor = 'black', yerr=1.96*(sigma3/(np.sqrt(r3.shape[0]))), capsize=7, label='Bi LSTM')\n",
    "#     plt.bar(ra4, bars4, width = barWidth, color = 'red', edgecolor = 'black', yerr=1.96*(sigma4/(np.sqrt(r4.shape[0]))), capsize=7, label='Encoder Decoder LSTM')\n",
    "    \n",
    "\n",
    "#     plt.ylabel('mean of RMSE for 30 iterations')\n",
    "#     plt.xlabel('Number of steps')\n",
    "#     plt.legend()\n",
    "#     plt.show()\n",
    "#     np.savetxt(\"10i_\"+str(r.shape[1])+\"o_\"+method+\"_\"+str(r.shape[0])+\"i\"+str(datetime.datetime.now())+\".csv\", r, delimiter=\",\")\n",
    "show_results_Combined(dADAM,dLSTM,dBI,dEN)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[ 831.492899 1098.416506 1328.846574 1479.148566 1647.483186 1830.260692\n",
      " 1945.06186  2026.655627 2069.030753 2070.632467]\n",
      "[ 907.99789818 1102.24166591 1247.2945     1267.87109773 1400.76888182\n",
      " 1516.37006364 1522.68825909 1582.75384091 1617.18547727 1595.48815909]\n"
     ]
    },
    {
     "data": {
      "application/vnd.plotly.v1+json": {
       "config": {
        "plotlyServerURL": "https://plot.ly"
       },
       "data": [
        {
         "error_y": {
          "array": [
           0,
           0,
           0,
           0,
           0,
           0,
           0,
           0,
           0,
           0
          ],
          "type": "data"
         },
         "marker": {
          "color": "rgb(55, 83, 109)"
         },
         "name": "ADAM",
         "type": "bar",
         "x": [
          1,
          2,
          3,
          4,
          5,
          6,
          7,
          8,
          9,
          10
         ],
         "y": [
          1687.1726,
          1686.9001,
          1684.3483,
          1684.8247,
          1685.0763,
          1684.6573,
          1684.4218,
          1683.5906,
          1683.5874,
          1683.9226
         ]
        },
        {
         "error_y": {
          "array": [
           172.169254,
           238.528065,
           341.459996,
           441.491785,
           537.957985,
           637.726564,
           779.544731,
           829.673226,
           826.63903,
           876.282741
          ],
          "type": "data"
         },
         "marker": {
          "color": "rgb(200,125,150)"
         },
         "name": "LSTM",
         "type": "bar",
         "x": [
          1,
          2,
          3,
          4,
          5,
          6,
          7,
          8,
          9,
          10
         ],
         "y": [
          831.492899,
          1098.416506,
          1328.846574,
          1479.148566,
          1647.483186,
          1830.260692,
          1945.06186,
          2026.655627,
          2069.030753,
          2070.632467
         ]
        },
        {
         "error_y": {
          "array": [
           107.03501517771312,
           175.170926466175,
           299.97044520599025,
           444.6531050970483,
           583.7804821437372,
           716.6806860894035,
           794.3289562281716,
           866.3426302297364,
           937.1772292760293,
           985.3801177158724
          ],
          "type": "data"
         },
         "marker": {
          "color": "rgb(13, 255, 20)"
         },
         "name": "Encoder Decoder",
         "type": "bar",
         "x": [
          1,
          2,
          3,
          4,
          5,
          6,
          7,
          8,
          9,
          10
         ],
         "y": [
          907.9978981818184,
          1102.2416659090914,
          1247.2944999999997,
          1267.8710977272729,
          1400.768881818182,
          1516.3700636363637,
          1522.6882590909088,
          1582.7538409090905,
          1617.1854772727274,
          1595.488159090909
         ]
        },
        {
         "error_y": {
          "array": [
           297.62602758924095,
           233.11362895057212,
           239.04078235519594,
           249.8065845747431,
           338.52210813035896,
           432.8538594320159,
           458.82670598640925,
           517.5997171087921,
           564.0009860576857,
           545.1923806407244
          ],
          "type": "data"
         },
         "marker": {
          "color": "rgb(255, 10, 10)"
         },
         "name": "Bi Directional ",
         "type": "bar",
         "x": [
          1,
          2,
          3,
          4,
          5,
          6,
          7,
          8,
          9,
          10
         ],
         "y": [
          835.1955288888888,
          1104.761437777778,
          1321.1131333333333,
          1488.1267,
          1635.6466888888888,
          1736.5995444444443,
          1792.5926111111112,
          1848.5611666666668,
          1903.858977777778,
          1938.3318666666664
         ]
        }
       ],
       "layout": {
        "bargap": 0.5,
        "bargroupgap": 0.05,
        "barmode": "group",
        "legend": {
         "bgcolor": "rgba(255, 255, 255, 0)",
         "bordercolor": "rgba(255, 255, 255, 0)",
         "x": 0,
         "y": 1
        },
        "template": {
         "data": {
          "bar": [
           {
            "error_x": {
             "color": "#2a3f5f"
            },
            "error_y": {
             "color": "#2a3f5f"
            },
            "marker": {
             "line": {
              "color": "#E5ECF6",
              "width": 0.5
             }
            },
            "type": "bar"
           }
          ],
          "barpolar": [
           {
            "marker": {
             "line": {
              "color": "#E5ECF6",
              "width": 0.5
             }
            },
            "type": "barpolar"
           }
          ],
          "carpet": [
           {
            "aaxis": {
             "endlinecolor": "#2a3f5f",
             "gridcolor": "white",
             "linecolor": "white",
             "minorgridcolor": "white",
             "startlinecolor": "#2a3f5f"
            },
            "baxis": {
             "endlinecolor": "#2a3f5f",
             "gridcolor": "white",
             "linecolor": "white",
             "minorgridcolor": "white",
             "startlinecolor": "#2a3f5f"
            },
            "type": "carpet"
           }
          ],
          "choropleth": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "type": "choropleth"
           }
          ],
          "contour": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "colorscale": [
             [
              0,
              "#0d0887"
             ],
             [
              0.1111111111111111,
              "#46039f"
             ],
             [
              0.2222222222222222,
              "#7201a8"
             ],
             [
              0.3333333333333333,
              "#9c179e"
             ],
             [
              0.4444444444444444,
              "#bd3786"
             ],
             [
              0.5555555555555556,
              "#d8576b"
             ],
             [
              0.6666666666666666,
              "#ed7953"
             ],
             [
              0.7777777777777778,
              "#fb9f3a"
             ],
             [
              0.8888888888888888,
              "#fdca26"
             ],
             [
              1,
              "#f0f921"
             ]
            ],
            "type": "contour"
           }
          ],
          "contourcarpet": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "type": "contourcarpet"
           }
          ],
          "heatmap": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "colorscale": [
             [
              0,
              "#0d0887"
             ],
             [
              0.1111111111111111,
              "#46039f"
             ],
             [
              0.2222222222222222,
              "#7201a8"
             ],
             [
              0.3333333333333333,
              "#9c179e"
             ],
             [
              0.4444444444444444,
              "#bd3786"
             ],
             [
              0.5555555555555556,
              "#d8576b"
             ],
             [
              0.6666666666666666,
              "#ed7953"
             ],
             [
              0.7777777777777778,
              "#fb9f3a"
             ],
             [
              0.8888888888888888,
              "#fdca26"
             ],
             [
              1,
              "#f0f921"
             ]
            ],
            "type": "heatmap"
           }
          ],
          "heatmapgl": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "colorscale": [
             [
              0,
              "#0d0887"
             ],
             [
              0.1111111111111111,
              "#46039f"
             ],
             [
              0.2222222222222222,
              "#7201a8"
             ],
             [
              0.3333333333333333,
              "#9c179e"
             ],
             [
              0.4444444444444444,
              "#bd3786"
             ],
             [
              0.5555555555555556,
              "#d8576b"
             ],
             [
              0.6666666666666666,
              "#ed7953"
             ],
             [
              0.7777777777777778,
              "#fb9f3a"
             ],
             [
              0.8888888888888888,
              "#fdca26"
             ],
             [
              1,
              "#f0f921"
             ]
            ],
            "type": "heatmapgl"
           }
          ],
          "histogram": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "histogram"
           }
          ],
          "histogram2d": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "colorscale": [
             [
              0,
              "#0d0887"
             ],
             [
              0.1111111111111111,
              "#46039f"
             ],
             [
              0.2222222222222222,
              "#7201a8"
             ],
             [
              0.3333333333333333,
              "#9c179e"
             ],
             [
              0.4444444444444444,
              "#bd3786"
             ],
             [
              0.5555555555555556,
              "#d8576b"
             ],
             [
              0.6666666666666666,
              "#ed7953"
             ],
             [
              0.7777777777777778,
              "#fb9f3a"
             ],
             [
              0.8888888888888888,
              "#fdca26"
             ],
             [
              1,
              "#f0f921"
             ]
            ],
            "type": "histogram2d"
           }
          ],
          "histogram2dcontour": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "colorscale": [
             [
              0,
              "#0d0887"
             ],
             [
              0.1111111111111111,
              "#46039f"
             ],
             [
              0.2222222222222222,
              "#7201a8"
             ],
             [
              0.3333333333333333,
              "#9c179e"
             ],
             [
              0.4444444444444444,
              "#bd3786"
             ],
             [
              0.5555555555555556,
              "#d8576b"
             ],
             [
              0.6666666666666666,
              "#ed7953"
             ],
             [
              0.7777777777777778,
              "#fb9f3a"
             ],
             [
              0.8888888888888888,
              "#fdca26"
             ],
             [
              1,
              "#f0f921"
             ]
            ],
            "type": "histogram2dcontour"
           }
          ],
          "mesh3d": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "type": "mesh3d"
           }
          ],
          "parcoords": [
           {
            "line": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "parcoords"
           }
          ],
          "pie": [
           {
            "automargin": true,
            "type": "pie"
           }
          ],
          "scatter": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scatter"
           }
          ],
          "scatter3d": [
           {
            "line": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scatter3d"
           }
          ],
          "scattercarpet": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scattercarpet"
           }
          ],
          "scattergeo": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scattergeo"
           }
          ],
          "scattergl": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scattergl"
           }
          ],
          "scattermapbox": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scattermapbox"
           }
          ],
          "scatterpolar": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scatterpolar"
           }
          ],
          "scatterpolargl": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scatterpolargl"
           }
          ],
          "scatterternary": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scatterternary"
           }
          ],
          "surface": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "colorscale": [
             [
              0,
              "#0d0887"
             ],
             [
              0.1111111111111111,
              "#46039f"
             ],
             [
              0.2222222222222222,
              "#7201a8"
             ],
             [
              0.3333333333333333,
              "#9c179e"
             ],
             [
              0.4444444444444444,
              "#bd3786"
             ],
             [
              0.5555555555555556,
              "#d8576b"
             ],
             [
              0.6666666666666666,
              "#ed7953"
             ],
             [
              0.7777777777777778,
              "#fb9f3a"
             ],
             [
              0.8888888888888888,
              "#fdca26"
             ],
             [
              1,
              "#f0f921"
             ]
            ],
            "type": "surface"
           }
          ],
          "table": [
           {
            "cells": {
             "fill": {
              "color": "#EBF0F8"
             },
             "line": {
              "color": "white"
             }
            },
            "header": {
             "fill": {
              "color": "#C8D4E3"
             },
             "line": {
              "color": "white"
             }
            },
            "type": "table"
           }
          ]
         },
         "layout": {
          "annotationdefaults": {
           "arrowcolor": "#2a3f5f",
           "arrowhead": 0,
           "arrowwidth": 1
          },
          "coloraxis": {
           "colorbar": {
            "outlinewidth": 0,
            "ticks": ""
           }
          },
          "colorscale": {
           "diverging": [
            [
             0,
             "#8e0152"
            ],
            [
             0.1,
             "#c51b7d"
            ],
            [
             0.2,
             "#de77ae"
            ],
            [
             0.3,
             "#f1b6da"
            ],
            [
             0.4,
             "#fde0ef"
            ],
            [
             0.5,
             "#f7f7f7"
            ],
            [
             0.6,
             "#e6f5d0"
            ],
            [
             0.7,
             "#b8e186"
            ],
            [
             0.8,
             "#7fbc41"
            ],
            [
             0.9,
             "#4d9221"
            ],
            [
             1,
             "#276419"
            ]
           ],
           "sequential": [
            [
             0,
             "#0d0887"
            ],
            [
             0.1111111111111111,
             "#46039f"
            ],
            [
             0.2222222222222222,
             "#7201a8"
            ],
            [
             0.3333333333333333,
             "#9c179e"
            ],
            [
             0.4444444444444444,
             "#bd3786"
            ],
            [
             0.5555555555555556,
             "#d8576b"
            ],
            [
             0.6666666666666666,
             "#ed7953"
            ],
            [
             0.7777777777777778,
             "#fb9f3a"
            ],
            [
             0.8888888888888888,
             "#fdca26"
            ],
            [
             1,
             "#f0f921"
            ]
           ],
           "sequentialminus": [
            [
             0,
             "#0d0887"
            ],
            [
             0.1111111111111111,
             "#46039f"
            ],
            [
             0.2222222222222222,
             "#7201a8"
            ],
            [
             0.3333333333333333,
             "#9c179e"
            ],
            [
             0.4444444444444444,
             "#bd3786"
            ],
            [
             0.5555555555555556,
             "#d8576b"
            ],
            [
             0.6666666666666666,
             "#ed7953"
            ],
            [
             0.7777777777777778,
             "#fb9f3a"
            ],
            [
             0.8888888888888888,
             "#fdca26"
            ],
            [
             1,
             "#f0f921"
            ]
           ]
          },
          "colorway": [
           "#636efa",
           "#EF553B",
           "#00cc96",
           "#ab63fa",
           "#FFA15A",
           "#19d3f3",
           "#FF6692",
           "#B6E880",
           "#FF97FF",
           "#FECB52"
          ],
          "font": {
           "color": "#2a3f5f"
          },
          "geo": {
           "bgcolor": "white",
           "lakecolor": "white",
           "landcolor": "#E5ECF6",
           "showlakes": true,
           "showland": true,
           "subunitcolor": "white"
          },
          "hoverlabel": {
           "align": "left"
          },
          "hovermode": "closest",
          "mapbox": {
           "style": "light"
          },
          "paper_bgcolor": "white",
          "plot_bgcolor": "#E5ECF6",
          "polar": {
           "angularaxis": {
            "gridcolor": "white",
            "linecolor": "white",
            "ticks": ""
           },
           "bgcolor": "#E5ECF6",
           "radialaxis": {
            "gridcolor": "white",
            "linecolor": "white",
            "ticks": ""
           }
          },
          "scene": {
           "xaxis": {
            "backgroundcolor": "#E5ECF6",
            "gridcolor": "white",
            "gridwidth": 2,
            "linecolor": "white",
            "showbackground": true,
            "ticks": "",
            "zerolinecolor": "white"
           },
           "yaxis": {
            "backgroundcolor": "#E5ECF6",
            "gridcolor": "white",
            "gridwidth": 2,
            "linecolor": "white",
            "showbackground": true,
            "ticks": "",
            "zerolinecolor": "white"
           },
           "zaxis": {
            "backgroundcolor": "#E5ECF6",
            "gridcolor": "white",
            "gridwidth": 2,
            "linecolor": "white",
            "showbackground": true,
            "ticks": "",
            "zerolinecolor": "white"
           }
          },
          "shapedefaults": {
           "line": {
            "color": "#2a3f5f"
           }
          },
          "ternary": {
           "aaxis": {
            "gridcolor": "white",
            "linecolor": "white",
            "ticks": ""
           },
           "baxis": {
            "gridcolor": "white",
            "linecolor": "white",
            "ticks": ""
           },
           "bgcolor": "#E5ECF6",
           "caxis": {
            "gridcolor": "white",
            "linecolor": "white",
            "ticks": ""
           }
          },
          "title": {
           "x": 0.05
          },
          "xaxis": {
           "automargin": true,
           "gridcolor": "white",
           "linecolor": "white",
           "ticks": "",
           "title": {
            "standoff": 15
           },
           "zerolinecolor": "white",
           "zerolinewidth": 2
          },
          "yaxis": {
           "automargin": true,
           "gridcolor": "white",
           "linecolor": "white",
           "ticks": "",
           "title": {
            "standoff": 15
           },
           "zerolinecolor": "white",
           "zerolinewidth": 2
          }
         }
        },
        "title": {
         "text": "mean of RMSE for 30 iterations"
        },
        "xaxis": {
         "tickfont": {
          "size": 14
         }
        },
        "yaxis": {
         "tickfont": {
          "size": 14
         },
         "title": {
          "font": {
           "size": 16
          },
          "text": "RMSE"
         }
        }
       }
      },
      "text/html": [
       "<div>\n",
       "        \n",
       "        \n",
       "            <div id=\"53df1a3a-7d19-4357-9301-e5e0f18bf0e8\" class=\"plotly-graph-div\" style=\"height:525px; width:100%;\"></div>\n",
       "            <script type=\"text/javascript\">\n",
       "                require([\"plotly\"], function(Plotly) {\n",
       "                    window.PLOTLYENV=window.PLOTLYENV || {};\n",
       "                    \n",
       "                if (document.getElementById(\"53df1a3a-7d19-4357-9301-e5e0f18bf0e8\")) {\n",
       "                    Plotly.newPlot(\n",
       "                        '53df1a3a-7d19-4357-9301-e5e0f18bf0e8',\n",
       "                        [{\"error_y\": {\"array\": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], \"type\": \"data\"}, \"marker\": {\"color\": \"rgb(55, 83, 109)\"}, \"name\": \"ADAM\", \"type\": \"bar\", \"x\": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], \"y\": [1687.1726, 1686.9001, 1684.3483, 1684.8247, 1685.0763, 1684.6573, 1684.4218, 1683.5906, 1683.5874, 1683.9226]}, {\"error_y\": {\"array\": [172.169254, 238.528065, 341.459996, 441.491785, 537.957985, 637.726564, 779.544731, 829.673226, 826.63903, 876.282741], \"type\": \"data\"}, \"marker\": {\"color\": \"rgb(200,125,150)\"}, \"name\": \"LSTM\", \"type\": \"bar\", \"x\": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], \"y\": [831.492899, 1098.416506, 1328.846574, 1479.148566, 1647.483186, 1830.260692, 1945.06186, 2026.655627, 2069.030753, 2070.632467]}, {\"error_y\": {\"array\": [107.03501517771312, 175.170926466175, 299.97044520599025, 444.6531050970483, 583.7804821437372, 716.6806860894035, 794.3289562281716, 866.3426302297364, 937.1772292760293, 985.3801177158724], \"type\": \"data\"}, \"marker\": {\"color\": \"rgb(13, 255, 20)\"}, \"name\": \"Encoder Decoder\", \"type\": \"bar\", \"x\": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], \"y\": [907.9978981818184, 1102.2416659090914, 1247.2944999999997, 1267.8710977272729, 1400.768881818182, 1516.3700636363637, 1522.6882590909088, 1582.7538409090905, 1617.1854772727274, 1595.488159090909]}, {\"error_y\": {\"array\": [297.62602758924095, 233.11362895057212, 239.04078235519594, 249.8065845747431, 338.52210813035896, 432.8538594320159, 458.82670598640925, 517.5997171087921, 564.0009860576857, 545.1923806407244], \"type\": \"data\"}, \"marker\": {\"color\": \"rgb(255, 10, 10)\"}, \"name\": \"Bi Directional \", \"type\": \"bar\", \"x\": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], \"y\": [835.1955288888888, 1104.761437777778, 1321.1131333333333, 1488.1267, 1635.6466888888888, 1736.5995444444443, 1792.5926111111112, 1848.5611666666668, 1903.858977777778, 1938.3318666666664]}],\n",
       "                        {\"bargap\": 0.5, \"bargroupgap\": 0.05, \"barmode\": \"group\", \"legend\": {\"bgcolor\": \"rgba(255, 255, 255, 0)\", \"bordercolor\": \"rgba(255, 255, 255, 0)\", \"x\": 0, \"y\": 1.0}, \"template\": {\"data\": {\"bar\": [{\"error_x\": {\"color\": \"#2a3f5f\"}, \"error_y\": {\"color\": \"#2a3f5f\"}, \"marker\": {\"line\": {\"color\": \"#E5ECF6\", \"width\": 0.5}}, \"type\": \"bar\"}], \"barpolar\": [{\"marker\": {\"line\": {\"color\": \"#E5ECF6\", \"width\": 0.5}}, \"type\": \"barpolar\"}], \"carpet\": [{\"aaxis\": {\"endlinecolor\": \"#2a3f5f\", \"gridcolor\": \"white\", \"linecolor\": \"white\", \"minorgridcolor\": \"white\", \"startlinecolor\": \"#2a3f5f\"}, \"baxis\": {\"endlinecolor\": \"#2a3f5f\", \"gridcolor\": \"white\", \"linecolor\": \"white\", \"minorgridcolor\": \"white\", \"startlinecolor\": \"#2a3f5f\"}, \"type\": \"carpet\"}], \"choropleth\": [{\"colorbar\": {\"outlinewidth\": 0, \"ticks\": \"\"}, \"type\": \"choropleth\"}], \"contour\": [{\"colorbar\": {\"outlinewidth\": 0, \"ticks\": \"\"}, \"colorscale\": [[0.0, \"#0d0887\"], [0.1111111111111111, \"#46039f\"], [0.2222222222222222, \"#7201a8\"], [0.3333333333333333, \"#9c179e\"], [0.4444444444444444, \"#bd3786\"], [0.5555555555555556, \"#d8576b\"], [0.6666666666666666, \"#ed7953\"], [0.7777777777777778, \"#fb9f3a\"], [0.8888888888888888, \"#fdca26\"], [1.0, \"#f0f921\"]], \"type\": \"contour\"}], \"contourcarpet\": [{\"colorbar\": {\"outlinewidth\": 0, \"ticks\": \"\"}, \"type\": \"contourcarpet\"}], \"heatmap\": [{\"colorbar\": {\"outlinewidth\": 0, \"ticks\": \"\"}, \"colorscale\": [[0.0, \"#0d0887\"], [0.1111111111111111, \"#46039f\"], [0.2222222222222222, \"#7201a8\"], [0.3333333333333333, \"#9c179e\"], [0.4444444444444444, \"#bd3786\"], [0.5555555555555556, \"#d8576b\"], [0.6666666666666666, \"#ed7953\"], [0.7777777777777778, \"#fb9f3a\"], [0.8888888888888888, \"#fdca26\"], [1.0, \"#f0f921\"]], \"type\": \"heatmap\"}], \"heatmapgl\": [{\"colorbar\": {\"outlinewidth\": 0, \"ticks\": \"\"}, \"colorscale\": [[0.0, \"#0d0887\"], [0.1111111111111111, \"#46039f\"], [0.2222222222222222, \"#7201a8\"], [0.3333333333333333, \"#9c179e\"], [0.4444444444444444, \"#bd3786\"], [0.5555555555555556, \"#d8576b\"], [0.6666666666666666, \"#ed7953\"], [0.7777777777777778, \"#fb9f3a\"], [0.8888888888888888, \"#fdca26\"], [1.0, \"#f0f921\"]], \"type\": \"heatmapgl\"}], \"histogram\": [{\"marker\": {\"colorbar\": {\"outlinewidth\": 0, \"ticks\": \"\"}}, \"type\": \"histogram\"}], \"histogram2d\": [{\"colorbar\": {\"outlinewidth\": 0, \"ticks\": \"\"}, \"colorscale\": [[0.0, \"#0d0887\"], [0.1111111111111111, \"#46039f\"], [0.2222222222222222, \"#7201a8\"], [0.3333333333333333, \"#9c179e\"], [0.4444444444444444, \"#bd3786\"], [0.5555555555555556, \"#d8576b\"], [0.6666666666666666, \"#ed7953\"], [0.7777777777777778, \"#fb9f3a\"], [0.8888888888888888, \"#fdca26\"], [1.0, \"#f0f921\"]], \"type\": \"histogram2d\"}], \"histogram2dcontour\": [{\"colorbar\": {\"outlinewidth\": 0, \"ticks\": \"\"}, \"colorscale\": [[0.0, \"#0d0887\"], [0.1111111111111111, \"#46039f\"], [0.2222222222222222, \"#7201a8\"], [0.3333333333333333, \"#9c179e\"], [0.4444444444444444, \"#bd3786\"], [0.5555555555555556, \"#d8576b\"], [0.6666666666666666, \"#ed7953\"], [0.7777777777777778, \"#fb9f3a\"], [0.8888888888888888, \"#fdca26\"], [1.0, \"#f0f921\"]], \"type\": \"histogram2dcontour\"}], \"mesh3d\": [{\"colorbar\": {\"outlinewidth\": 0, \"ticks\": \"\"}, \"type\": \"mesh3d\"}], \"parcoords\": [{\"line\": {\"colorbar\": {\"outlinewidth\": 0, \"ticks\": \"\"}}, \"type\": \"parcoords\"}], \"pie\": [{\"automargin\": true, \"type\": \"pie\"}], \"scatter\": [{\"marker\": {\"colorbar\": {\"outlinewidth\": 0, \"ticks\": \"\"}}, \"type\": \"scatter\"}], \"scatter3d\": [{\"line\": {\"colorbar\": {\"outlinewidth\": 0, \"ticks\": \"\"}}, \"marker\": {\"colorbar\": {\"outlinewidth\": 0, \"ticks\": \"\"}}, \"type\": \"scatter3d\"}], \"scattercarpet\": [{\"marker\": {\"colorbar\": {\"outlinewidth\": 0, \"ticks\": \"\"}}, \"type\": \"scattercarpet\"}], \"scattergeo\": [{\"marker\": {\"colorbar\": {\"outlinewidth\": 0, \"ticks\": \"\"}}, \"type\": \"scattergeo\"}], \"scattergl\": [{\"marker\": {\"colorbar\": {\"outlinewidth\": 0, \"ticks\": \"\"}}, \"type\": \"scattergl\"}], \"scattermapbox\": [{\"marker\": {\"colorbar\": {\"outlinewidth\": 0, \"ticks\": \"\"}}, \"type\": \"scattermapbox\"}], \"scatterpolar\": [{\"marker\": {\"colorbar\": {\"outlinewidth\": 0, \"ticks\": \"\"}}, \"type\": \"scatterpolar\"}], \"scatterpolargl\": [{\"marker\": {\"colorbar\": {\"outlinewidth\": 0, \"ticks\": \"\"}}, \"type\": \"scatterpolargl\"}], \"scatterternary\": [{\"marker\": {\"colorbar\": {\"outlinewidth\": 0, \"ticks\": \"\"}}, \"type\": \"scatterternary\"}], \"surface\": [{\"colorbar\": {\"outlinewidth\": 0, \"ticks\": \"\"}, \"colorscale\": [[0.0, \"#0d0887\"], [0.1111111111111111, \"#46039f\"], [0.2222222222222222, \"#7201a8\"], [0.3333333333333333, \"#9c179e\"], [0.4444444444444444, \"#bd3786\"], [0.5555555555555556, \"#d8576b\"], [0.6666666666666666, \"#ed7953\"], [0.7777777777777778, \"#fb9f3a\"], [0.8888888888888888, \"#fdca26\"], [1.0, \"#f0f921\"]], \"type\": \"surface\"}], \"table\": [{\"cells\": {\"fill\": {\"color\": \"#EBF0F8\"}, \"line\": {\"color\": \"white\"}}, \"header\": {\"fill\": {\"color\": \"#C8D4E3\"}, \"line\": {\"color\": \"white\"}}, \"type\": \"table\"}]}, \"layout\": {\"annotationdefaults\": {\"arrowcolor\": \"#2a3f5f\", \"arrowhead\": 0, \"arrowwidth\": 1}, \"coloraxis\": {\"colorbar\": {\"outlinewidth\": 0, \"ticks\": \"\"}}, \"colorscale\": {\"diverging\": [[0, \"#8e0152\"], [0.1, \"#c51b7d\"], [0.2, \"#de77ae\"], [0.3, \"#f1b6da\"], [0.4, \"#fde0ef\"], [0.5, \"#f7f7f7\"], [0.6, \"#e6f5d0\"], [0.7, \"#b8e186\"], [0.8, \"#7fbc41\"], [0.9, \"#4d9221\"], [1, \"#276419\"]], \"sequential\": [[0.0, \"#0d0887\"], [0.1111111111111111, \"#46039f\"], [0.2222222222222222, \"#7201a8\"], [0.3333333333333333, \"#9c179e\"], [0.4444444444444444, \"#bd3786\"], [0.5555555555555556, \"#d8576b\"], [0.6666666666666666, \"#ed7953\"], [0.7777777777777778, \"#fb9f3a\"], [0.8888888888888888, \"#fdca26\"], [1.0, \"#f0f921\"]], \"sequentialminus\": [[0.0, \"#0d0887\"], [0.1111111111111111, \"#46039f\"], [0.2222222222222222, \"#7201a8\"], [0.3333333333333333, \"#9c179e\"], [0.4444444444444444, \"#bd3786\"], [0.5555555555555556, \"#d8576b\"], [0.6666666666666666, \"#ed7953\"], [0.7777777777777778, \"#fb9f3a\"], [0.8888888888888888, \"#fdca26\"], [1.0, \"#f0f921\"]]}, \"colorway\": [\"#636efa\", \"#EF553B\", \"#00cc96\", \"#ab63fa\", \"#FFA15A\", \"#19d3f3\", \"#FF6692\", \"#B6E880\", \"#FF97FF\", \"#FECB52\"], \"font\": {\"color\": \"#2a3f5f\"}, \"geo\": {\"bgcolor\": \"white\", \"lakecolor\": \"white\", \"landcolor\": \"#E5ECF6\", \"showlakes\": true, \"showland\": true, \"subunitcolor\": \"white\"}, \"hoverlabel\": {\"align\": \"left\"}, \"hovermode\": \"closest\", \"mapbox\": {\"style\": \"light\"}, \"paper_bgcolor\": \"white\", \"plot_bgcolor\": \"#E5ECF6\", \"polar\": {\"angularaxis\": {\"gridcolor\": \"white\", \"linecolor\": \"white\", \"ticks\": \"\"}, \"bgcolor\": \"#E5ECF6\", \"radialaxis\": {\"gridcolor\": \"white\", \"linecolor\": \"white\", \"ticks\": \"\"}}, \"scene\": {\"xaxis\": {\"backgroundcolor\": \"#E5ECF6\", \"gridcolor\": \"white\", \"gridwidth\": 2, \"linecolor\": \"white\", \"showbackground\": true, \"ticks\": \"\", \"zerolinecolor\": \"white\"}, \"yaxis\": {\"backgroundcolor\": \"#E5ECF6\", \"gridcolor\": \"white\", \"gridwidth\": 2, \"linecolor\": \"white\", \"showbackground\": true, \"ticks\": \"\", \"zerolinecolor\": \"white\"}, \"zaxis\": {\"backgroundcolor\": \"#E5ECF6\", \"gridcolor\": \"white\", \"gridwidth\": 2, \"linecolor\": \"white\", \"showbackground\": true, \"ticks\": \"\", \"zerolinecolor\": \"white\"}}, \"shapedefaults\": {\"line\": {\"color\": \"#2a3f5f\"}}, \"ternary\": {\"aaxis\": {\"gridcolor\": \"white\", \"linecolor\": \"white\", \"ticks\": \"\"}, \"baxis\": {\"gridcolor\": \"white\", \"linecolor\": \"white\", \"ticks\": \"\"}, \"bgcolor\": \"#E5ECF6\", \"caxis\": {\"gridcolor\": \"white\", \"linecolor\": \"white\", \"ticks\": \"\"}}, \"title\": {\"x\": 0.05}, \"xaxis\": {\"automargin\": true, \"gridcolor\": \"white\", \"linecolor\": \"white\", \"ticks\": \"\", \"title\": {\"standoff\": 15}, \"zerolinecolor\": \"white\", \"zerolinewidth\": 2}, \"yaxis\": {\"automargin\": true, \"gridcolor\": \"white\", \"linecolor\": \"white\", \"ticks\": \"\", \"title\": {\"standoff\": 15}, \"zerolinecolor\": \"white\", \"zerolinewidth\": 2}}}, \"title\": {\"text\": \"mean of RMSE for 30 iterations\"}, \"xaxis\": {\"tickfont\": {\"size\": 14}}, \"yaxis\": {\"tickfont\": {\"size\": 14}, \"title\": {\"font\": {\"size\": 16}, \"text\": \"RMSE\"}}},\n",
       "                        {\"responsive\": true}\n",
       "                    ).then(function(){\n",
       "                            \n",
       "var gd = document.getElementById('53df1a3a-7d19-4357-9301-e5e0f18bf0e8');\n",
       "var x = new MutationObserver(function (mutations, observer) {{\n",
       "        var display = window.getComputedStyle(gd).display;\n",
       "        if (!display || display === 'none') {{\n",
       "            console.log([gd, 'removed!']);\n",
       "            Plotly.purge(gd);\n",
       "            observer.disconnect();\n",
       "        }}\n",
       "}});\n",
       "\n",
       "// Listen for the removal of the full notebook cells\n",
       "var notebookContainer = gd.closest('#notebook-container');\n",
       "if (notebookContainer) {{\n",
       "    x.observe(notebookContainer, {childList: true});\n",
       "}}\n",
       "\n",
       "// Listen for the clearing of the current output cell\n",
       "var outputEl = gd.closest('.output');\n",
       "if (outputEl) {{\n",
       "    x.observe(outputEl, {childList: true});\n",
       "}}\n",
       "\n",
       "                        })\n",
       "                };\n",
       "                });\n",
       "            </script>\n",
       "        </div>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import plotly.graph_objects as go\n",
    "dLSTM=[831.492899\n",
    ",1098.416506\n",
    ",1328.846574\n",
    ",    1479.148566\n",
    ",    1647.483186\n",
    ",    1830.260692\n",
    ",    1945.061860\n",
    ",    2026.655627\n",
    ",    2069.030753\n",
    ",    2070.632467]\n",
    "\n",
    "LSTMsigma=[172.169254\n",
    ",  238.528065\n",
    ",    341.459996\n",
    ",    441.491785\n",
    ",    537.957985\n",
    ",    637.726564\n",
    ",    779.544731\n",
    ",    829.673226\n",
    ",    826.639030\n",
    ",    876.282741]\n",
    "dLSTM=np.array(dLSTM)\n",
    "\n",
    "u1=np.mean(dADAM,axis=0)\n",
    "u2=dLSTM\n",
    "print(u2)\n",
    "u3=np.mean(dBI,axis=0)\n",
    "print(u3)\n",
    "u4=np.mean(dEN,axis=0)\n",
    "sigma1=np.std(dADAM,axis=0)\n",
    "sigma2=np.array(LSTMsigma)\n",
    "sigma3=np.std(dEN,axis=0)\n",
    "sigma4=np.std(dBI,axis=0)\n",
    "fig = go.Figure()\n",
    "df=pd.DataFrame()\n",
    "df['ADAM']=u1\n",
    "\n",
    "df['LSTM']=u2\n",
    "df['EN']=u3\n",
    "df['BI']=u4\n",
    "df['steps']=[1,2,3,4,5,6,7,8,9,10]\n",
    "fig.add_trace(go.Bar(x=df['steps'],\n",
    "                y=df['ADAM'],\n",
    "                     error_y=dict(type='data', array=sigma1),\n",
    "                name='ADAM',\n",
    "                marker_color='rgb(55, 83, 109)'\n",
    "                ))\n",
    "fig.add_trace(go.Bar(x=df['steps'],\n",
    "                y=df['LSTM'],\n",
    "                error_y=dict(type='data', array=sigma2),\n",
    "                name='LSTM',\n",
    "                marker_color='rgb(200,125,150)'\n",
    "                ))\n",
    "fig.add_trace(go.Bar(x=df['steps'],\n",
    "                y=df['EN'],\n",
    "                error_y=dict(type='data', array=sigma3),\n",
    "                name='Encoder Decoder',\n",
    "                marker_color='rgb(13, 255, 20)'\n",
    "                ))\n",
    "fig.add_trace(go.Bar(x=df['steps'],\n",
    "                y=df['BI'],\n",
    "                error_y=dict(type='data', array=sigma4),\n",
    "                name='Bi Directional ',\n",
    "                marker_color='rgb(255, 10, 10)'\n",
    "                ))\n",
    "\n",
    "fig.update_layout(\n",
    "    title='mean of RMSE for 30 iterations' ,\n",
    "    xaxis_tickfont_size=14,\n",
    "    yaxis=dict(\n",
    "        title='RMSE',\n",
    "        titlefont_size=16,\n",
    "        tickfont_size=14,\n",
    "    ),\n",
    "    legend=dict(\n",
    "        x=0,\n",
    "        y=1.0,\n",
    "        bgcolor='rgba(255, 255, 255, 0)',\n",
    "        bordercolor='rgba(255, 255, 255, 0)'\n",
    "    ),\n",
    "    barmode='group',\n",
    "    bargap=0.5, # gap between bars of adjacent location coordinates.\n",
    "    bargroupgap=0.05# gap between bars of the same location coordinate.\n",
    "   \n",
    "    \n",
    ")\n",
    "fig.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
